为了账号安全,请及时绑定邮箱和手机立即绑定

初始化是否需要从lvalue到rvalue的转换?‘int x=x;’UB?

初始化是否需要从lvalue到rvalue的转换?‘int x=x;’UB?

C++ C
撒科打诨 2019-07-03 10:13:08
初始化是否需要从lvalue到rvalue的转换?‘int x=x;’UB?C+标准包含了3.3.2中“令人惊讶的”名称查找的一个半著名的示例“声明点”:int x = x;这将初始化x它本身,它(是一个原始类型)是未初始化因此,它有一个不确定的值(假设它是一个自动变量)。这实际上是没有定义的行为吗?根据4.1“lvalue-rvalue转换”,对未初始化的值执行lvalue-rvalue转换是未定义的行为。右手x接受这个转变?如果是这样的话,这个例子是否真的有未定义的行为呢?
查看完整描述

3 回答

?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

这不是未定义的行为,只是不知道它的具体值,因为没有初始化。如果变量是全局的,并且是内置类型的,那么编译器将把它初始化为正确的值。如果变量是本地的,所以编译器没有初始化它,所以所有变量都是自己初始化的,那么就不要依赖编译器。


查看完整回答
反对 回复 2019-07-03
  • 3 回答
  • 0 关注
  • 458 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信