struct tt;
{
int n1;char n2;float n3;//因为4字节对齐,这里是12个字节
union uu//这里是个union,所以里面的内容最大的,作为它的大小,所以是用int u1[2],占8个字节
{
int u1[2];char u2[2];
}su;
};
最后的结果,应该是12+8= 20
11是绝对不正确的。
值得注意的是,编译器有些可以设置对齐方式的,会影响结构体的大小
n1为int型,占2字节,n2为字符型,占1个字节,n3为float型,在TC2.0中系统会用双精度处理,占8个字节,2+1+8=11,根据程序来应该是这个结果。
union联合体里面只能算一个数据,最长那个,并不是所有的数据长度都要算进行的
2+1+4+2*2=11