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