c语言中union问题
(30)已知:
union u_type
{ int i;
char ch;
float a;
}temp;
现在windows环境下,执行"temp.i=266;printf("%d",temp.ch)"的结果是( )。
A、266
B、256
C、10
D、1
为什么会是C?
[解决办法]
刚才的16进制,前面加4个0,方法不变。
[解决办法]
联合体的总长度为4个字节。那么
temp.i = 266 ,这四个字节里存放的为266,十六进制为 00 00 01 0A,而char ch;为一个字节,所以取的是第一个字节(根据小端)即0x0A;就是10。