公用体中有整型i,字符型ch,之后赋值i=1 打印ch (%d)

来源:百度知道 编辑:UC知道 时间:2024/06/03 21:35:15
union u-type
{ int i;char ch;
}temp;
temp.i=266;
printf("%d",temp.ch);
不是转换成2进制吗?为什么是16进制?是哪样规定的?

你要问什么?打出来ch的值是10,因为266化为16进制是0x0000010A,对该temp结构体,int占四个字节,char占1个字节,它们共享一个四字节空间,赋值以后,4个字节放置的数据依次是00 00 01 0A,接下来就和机器有关了,这涉及到多字节的存储顺序,如果是little-endian(一般intelPC都是),存放规则低低高高,即低地址存放低字节(因此真实存放顺序为0A 01 00 00),所以char的值便是数据0A,也就是10