1 #include <stdio.h> 2 3 typedef union _A{ 4 int i; 5 char c[2]; 6 }A; 7 8 A g_a; //266 9 10 int main(){ 11 static A s_a; // 266 12 A a_a; 13 14 s_a.c[0] = 10; 15 s_a.c[1] = 1; 16 17 g_a.c[0] = 10; 18 g_a.c[1] = 1; 19 20 a_a.c[0] = 10; 21 a_a.c[1] = 1; 22 23 printf("%d ", g_a.i); 24 printf("%d ", s_a.i); 25 printf("%d ", a_a.i); 26 27 getchar(); 28 29 return 0; 30 }
上面的结果是怎么样的?
在c89标准,32位平台下,全局变量g_a和局部静态变量S_a自动初始化为0, 局部变量a_a的值是随机的。编译器为这3个变量预留了4个字节的空间。
解释如下图;