关于位域的问题,求解答
struct haha
{
unsigned char a:4,
unsigned char b:2,
unsigned char c:1;
unsigned char d:1;
};
void main()
{
haha hhh;
hhh.a=15;
hhh.b=3;
hhh.c=1;
hhh.d=1;
//printf("%u\t%u\t%u\t%u\n",hhh.a,hhh.b,hhh.c,sizeof(hhh));
haha *h=&hhh;
printf("%d\n",*h);
}
输出结果: 255
如果把结构体内的数据稍加修改如下
struct haha
{
unsigned char a:4,
unsigned char b:2,
unsigned char c:2;
};
void main()
{
haha hhh;
hhh.a=15;
hhh.b=3;
hhh.c=3;
//printf("%u\t%u\t%u\t%u\n",hhh.a,hhh.b,hhh.c,sizeof(hhh));
haha *h=&hhh;
printf("%d\n",*h);
}
输出结果:4344575
为什么会出现如此差异呢?一直苦思冥想

浙公网安备 33010602011771号