这个共用体怎么个回事啊? 请好心的帅哥帮帮看看吧 不胜感激!

来源:百度知道 编辑:UC知道 时间:2024/06/18 13:45:20
union
{int i;
char ch[2];}key;

void main()
{
key.i=65*256+66;
printf("%c\t%c\n",key.ch[0],key.ch[1]);
}
key.i= 65*256+66 =16707啊
为啥 i 会变化啊,而且 出来的是 B A啊?
我马上要考试了,可是这个共用体还不太明白可以帮讲解下么 谢谢了

共同体就是所有成员共用一块内存空间.比如这个例子应该是TC下的,int是16位,char ch[2]也是16位,所以key总共只占16位空间.它里面存放的数据,既可以看成是整数i,也可以看成是2个char.其中,ch[0]对应i的低8位.

65*256+66=16706,对应在内存中的二进制形式是01000001 010000010,看成是2个char的话,就分别是65,66了