问题描述
- 一道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
解决方案
A 256 + 10
解决方案二:
好吧 内存长这样
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
解决方案三:
A 256 + 10
解决方案四:
A,二楼分析的很是详细,,完全赞同
时间: 2024-12-27 21:40:33