Ara*_*raK 6 c++ primitive-types undefined-behavior static-order-fiasco unspecified-behavior
可以说我们有两个编译单元如下:
// a.cpp
extern int value2;
int value1 = value2 + 10;
// b.cpp
extern int value1;
int value2 = value1 + 10;
Run Code Online (Sandbox Code Playgroud)
当我在VC2010上尝试它时,它首先初始化value1
并value2
归零.不能全是value1
和value2
动态初始化,并默认初始化不会对他们适用?
谢谢,
3.6.2/1表示"在进行任何其他初始化之前,具有静态存储持续时间(3.7.1)的对象应进行零初始化(8.5)".
所以你是对的,它们不是默认初始化的.但它们是零初始化的,实际上它们int
是同一个东西.对于类类型,它不一定是同一个东西.
这就是说,我不看好这里的行为仅仅是初始化的顺序是不确定的,因此是一个可变的10个,其他20个,但不确定这是结束了.在某些其他方面可能没有定义,但我想不出任何其他理由.
归档时间: |
|
查看次数: |
165 次 |
最近记录: |