C中的静态变量初始化

可能重复:
C中静态变量的初始化

我知道全局变量或静态都是在C中自动初始化为零。但是,我不确定是否只有一个或者只有一个被初始化。 请注意,我不是在讨论函数中定义的变量,而是在.c文件中全局变量。

那么以下哪个变量会自动初始化为零?

static struct mystruct var1; struct mystruct var2; static struct { int x; int y; } var3; 

C FAQ 。

我在codepad中运行了以下代码

 struct mystruct { int a; }; static struct mystruct var1; struct mystruct var2; static struct { int x; int y; } var3; #include  void main() { int x; printf("var1.a: %d\n", var1.a); printf("var2.a: %d\n", var2.a); printf("var3.x: %d\n", var3.x); printf("var3.y: %d\n", var3.y); printf("x: %d\n", x); } 

结果:

 var1.a: 0 var2.a: 0 var3.x: 0 var3.y: 0 x: 1075105060 

无论如何,我不喜欢对初始化做出假设,而是YMMV。