问个语言问题,在线等答案

来源:百度知道 编辑:UC知道 时间:2024/09/23 04:07:52
下列程序的执行结果是()
#include<stdio.h>
union un
{
int i;
char c[2];
}
main()
{
union un x;
x.c[0]=10;
x.c[1]=1;
printf("\n%d",x.i);
}
A.266 B.11 C.265 D.138
答案是A
我看弹好强的书上写只能输出最后一个啊,那也就是只能输出x.c[]呀
不能输出x.i呀,怎么这里又输出了呢???

联合体成员共同占有同一内存. 且内存使用由低到高
x.c[0]占一个字节,占低8位
x.c[1]占一个字节,占高8位
x.i 占两个字节,16位(即x.c[1]和x[0]一起所占空间及原有值)
输出值为266: 1*2^8(256)+10

4个答案都不对。
因为i没有被赋值,那么变量i所在的位置里面是什么就会被输出什么,答案不可能确定和唯一。
题目你是不是看错了?