有如下封装,若 x.a = 0x22334455,则 x.u.b1、x.u.b2、x.u.b3 的值分别是多少?
union{
int a;
struct{
char b1;
short b2;
char b3;
}u;
}x;
一般情况下,默认系统为64位机小端模式。
联合体的大小是它的最大成员的大小,int类型大小为4,struct u 的大小的大小是6(2+2+2,根据最大自动补齐),所以这个联合体的大小为6。
所以在我们分配数据时,如下图。
所以答案分别是0x55,0x3322,0。