#include
union un //定义联合体,i与数组c共用存储单元
{ int i;
char c[2];
};
main()
{ union un x;
x.c[0]=10; //二进制为00001010
x.c[1]=1; //二进制为00000001
printf("\n%d",x.i); //输出的是二进制0000000100001010的十进制形式,即266
}
乱码,这是联合,i的值都没定义一个空的,在内存里面就是乱的。
这个结果谁知道啊, x.i 是个未初始化变量,虽然和x.c公用,但只有低16位是公用的,高16位是随机的,所以没法填写结果啊。
如果x.i原始值是0,赋值赋的是低16位,那么值是0x0000010a, 应该是266
由于本题定义的是共用体,所以成员表列中的整型变景x与字符数组c共占用同―个存储单元,且此存储单元为 2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为0000 0001 0000 1010 =266