C |结构与联盟|问题8

null

union test
{
int x;
char arr[4];
int y;
};
int main()
{
union test t;
t.x = 0;
t.arr[1] = 'G' ;
printf ( "%s" , t.arr);
return 0;
}


预测上述程序的输出。假设整数的大小为4字节,字符的大小为1字节。还假设不需要对齐。 (A) 什么也没印出来 (B) G (C) 垃圾字符后跟“G” (D) 垃圾字符后跟“G”,后跟更多垃圾字符 (E) 编译错误 答复: (A) 说明: 由于x和arr[4]共享相同的内存,当我们设置x=0时,arr的所有字符都设置为0。O是“”的ASCII值。当我们做“t.arr[1]=’G’”时,arr[]变成了“G”。当我们使用“%s”打印字符串时,printf函数从第一个字符开始打印,直到找到一个字符为止。由于第一个字符本身是空的,所以不会打印任何内容。 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享