"的extern"关键词用法

时间:2015-04-24 13:21:39

标签: c++ extern

我有以下代码段:

 #include<iostream>

 int main()
 {
     extern int a;
     printf("a = %d", a)
 }
 int a = 10;

以上示例代码打印10.我的猜测是应该打印垃圾值。有人可以解释一下吗?

3 个答案:

答案 0 :(得分:7)

全局变量具有静态持续时间,并且在main运行之前初始化静态。因此a在调用10时已将其值设置为printf

答案 1 :(得分:2)

链接器将extern int a解析为在程序执行之前链接时main之后声明的a。正如Borgleader所说,a是一个全局变量,所以它在调用main之前初始化。

答案 2 :(得分:1)

C ++程序不是从上到下线性执行的。只要在解析过程中看到它的定义,main就不会被神奇地执行。