请帮我用下面的代码片段相关的逻辑。我得到的输出是12 8
。 *p
怎么是12? 我理解它的大小为8,但我忐忑与*p
显示值。Ç摘录行为
int main()
{
struct bitfield
{
unsigned a:5;
unsigned c:5;
unsigned b:6;
} bit;
char *p;
struct bitfield bit1={1,3,3};
p=(char*)&bit1;
p++;
printf("%d\t%d",*p,sizeof(bit1));
getchar();
return 0;
}
注意,几乎一切都与位域w.r.t内存配置等是实现定义。通过'char *'访问位域值是最好的实现。在某些类型的处理器上显示的值全部为零是肯定可行的。 –