C++难道没有规定,全局变量的初始化顺序?没有自动调整的机制?编译器有BUG?

会录 会录 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
例子:
********************file1.cpp

int a1 = 1191;

extern int b2;
int b3 = b2 + 1;


********************file2.cpp

extern int a1;
int a2 = a1 + 1;

extern int b1;
int b2 = b1 + 1;


********************file3.cpp

extern int a2;
int a3 = a2 + 1;

int b1 = 2212;



********************main.cpp

extern int a3;
extern int b3;
int main()
{
std::cout<<a3<<std::endl;
std::cout<<b3<<std::endl;
}






猜猜上面的a3和b3的输出结果,是否正确?结果是有问题的。




...全文

相关推荐

C++全局变量初始化的一点总结

注意:本文所说的全局变量指的是 variables with static storage,措词来自 c++ 的语言标准文档。   什么时候初始化   根据 C++ 标准,全局变量的初始化要在 main 函数执行前完成,常识无疑,但是这个说法有点含糊,main 函数执行前到底具体是什么时候呢?是编译时还是运行时?答案是既有编译时,也可能会有运行时(seriously), 从语言的层面来说,全局变量的初始化可以认为分成以下两个阶段(c++11 N3690 3.6.2):   static initialization: 静态初始化指的是用常量来对变量进行初始化,主要包括 zero init

weixin_38739900

全局变量初始化导致的dll加载失败工程

本附件是相关博文的示例工程,欢迎有需要的小伙伴下载。下载后使用vs2013直接可以编译测试。希望感兴趣的小伙伴能亲自动手实战。

BianChengNan-BCN-BCN

C++ 成员变量的初始化顺序问题详解

C++ 成员变量的初始化顺序问题详解 问题来源: 由于面试题中,考官出了一道简单的程序输出结果值的题:如下, class A { private: int n1; int n2; public: A():n2(0),n1(n2+2){} void Print(){ cout &lt;&lt; "n1:" &lt;&lt; n1 &lt;&lt; ", n2: " &lt;&lt; n2 &lt;&lt;endl; } }; int main() { A a; a.Print(); return 1; }  这时,那个考生这样回答:n1是2,n2是0。 在我电脑输出结果为: 如果你也这样回答,那么你肯定不懂初始化成

weixin_38560768

VC++全局变量初始化-16.09.26

重点说明了VC++全局变量动态初始化的顺序

Hanford

c++ 子类构造函数初始化及父类构造初始化的使用

主要介绍了c++ 子类构造函数初始化及父类构造初始化的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38684892
评论 43
收藏 已收藏
分享
返回顶部
会录
C++ 语言 65,214 成员 250,514 内容