关于位域的问题,求解答
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
为什么会出现如此差异呢?一直苦思冥想