共用体是什么啊?

[复制链接]
查看11 | 回复1 | 2009-4-22 11:36:38 | 显示全部楼层 |阅读模式
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]);
}
可以教教我这个 程序为什么出来的结果是 B A么
key.i=65*256+66
只能得出来等于16706啊
为啥能出来 66 65 这两个数呢?
而且只是一个式子 为啥能出来key.0 key.1 呢i也没有变化啊

回复

使用道具 举报

千问 | 2009-4-22 11:36:38 | 显示全部楼层
共同体就是所有成员共用一块内存空间.比如这个例子应该是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了...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行