下面程序的输入为 union { int i; char x[2]; } a; void main() { a.x[0] = 10; a.x[1] = 1; printf("%d", a.i); } 265 266 267 268
union { int i; char x[2]; } a; void main() { a.x[0] = 10; a.x[1] = 1; printf("%d", a.i); }
B
本题没有说int是32位还是16位
若是16位,选B。
内存分布是:
&i、&a[0]=x---> |_a[0]_| 00001010
&a[1]=x+1--->|_a[1]_| 00000001
所以i=0000 0001 0000 1010=266;
若是32位,输出随机值。
因为高地址空间没有赋值
&a[2]=x+2--->|______| 随机值
&a[3]=x+3--->|______| 随机值