经典指数          
原因
2975
浏览数
0
收藏数
 

下面程序的输入为
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

     举报   纠错  
 
切换
1 个答案

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位,输出随机值。

因为高地址空间没有赋值

 &i、&a[0]=x--->  |_a[0]_| 00001010

     &a[1]=x+1--->|_a[1]_| 00000001

     &a[2]=x+2--->|______| 随机值

     &a[3]=x+3--->|______| 随机值

 
切换
撰写答案