gpt4 book ai didi

c++ - 静态初始化命令惨败

转载 作者:IT老高 更新时间:2023-10-28 21:51:50 26 4
gpt4 key购买 nike

我正在从一本书中读到关于 SIOF 的信息,它举了一个例子:

//file1.cpp
extern int y;
int x=y+1;

//file2.cpp
extern int x;
int y=x+1;

现在我的问题是:
在上面的代码中,会发生以下事情吗?

  1. 在编译 file1.cpp 时,编译器将 y 保留原样,即不为其分配存储空间。
  2. 编译器为 x 分配存储空间,但不初始化它。
  3. 编译 file2.cpp 时,编译器将 x 保留原样,即不为其分配存储空间。
  4. 编译器为 y 分配存储空间,但不初始化它。
  5. 在连接file1.o和file2.o时,先让file2.o初始化,所以现在:
    x 的初始值是否为 0?还是没有初始化?

最佳答案

C++标准3.6.2“非本地对象的初始化”中给出了初始化步骤:

步骤 1:xy 在任何其他初始化发生之前进行零初始化。

第 2 步:xy 被动态初始化 - 标准未指定哪一个。该变量将获得值 1,因为另一个变量将被初始化为零。

第三步:动态初始化另一个变量,得到值2

关于c++ - 静态初始化命令惨败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3035422/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com