2 lhy20120722 Lhy20120722 于 2014.02.26 15:31 提问

一道C语言问题请大神解答

下面程序的运行结果是多少,为什么?
union

{

int i;

char x[2];

}a;

int main(void)

{

a.x[0] = 10;

a.x[1] = 1;

cout<<a.i<<endl;

return 0;

}

A、266
B、0
C、1
D、256

4个回答

u013744219
u013744219   2014.02.26 15:48

A 256 + 10

neon80703965
neon80703965   2014.02.26 20:30

好吧 内存长这样
x[0] x[1]
int i:00000000 00000000 00000000 00000000
前两个字节是i和x重叠的部分,给x赋值改变了i
所以
x[0]=10 x[1]=1
int i:00001010 00000001 00000000 00000000
最后读的时候反过来
00000000 00000000 00000001 00001010

u013520212
u013520212 为什么读的时候要反过来呢?。。。。
3 年多之前 回复
tlxzsz
tlxzsz   2014.02.27 09:04

A 256 + 10

xy707707
xy707707   2014.06.04 17:48

A,二楼分析的很是详细,,完全赞同

Csdn user default icon
上传中...
上传图片
插入图片