当前位置: 代码迷 >> C语言 >> 共用型
  详细解决方案

共用型

热度:262   发布时间:2006-06-29 11:20:39.0
共用型
#include "stdio.h"

main()
{
union zj
{
int a;
char ch[2];
}au;
au.a=298;
printf("%d,%d,",au.ch[0],au.ch[1]);

这里的42和1是怎么算出来的?
----------------解决方案--------------------------------------------------------
这种问题应该看书..机器不同..得出的结果也不一定就是 42和1
----------------解决方案--------------------------------------------------------
不要乱来
----------------解决方案--------------------------------------------------------

共用体就是数据共用同一段内存,它占用的空间大小由内部数据占空间最大的决定,

例如union zj
{
int a;
char ch[2];
}au;
占用的空间为2字节,298在内存中的16进制表示为 012a H,(高地址存高位,低地址存低位)

所以 ch[0]=01H,ch[1]=2aH 对应的十进制数分别为 1,42

但在不同机器上同样的数据类型占用的空间可能不同,如有的系统规定整形占四个字节等,最终结果可能不同.


----------------解决方案--------------------------------------------------------
  相关解决方案