C语言计算结构体长度问题

2025-02-28 21:23:45
推荐回答(4个)
回答1:

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是绝对不正确的。
值得注意的是,编译器有些可以设置对齐方式的,会影响结构体的大小

回答2:

n1为int型,占2字节,n2为字符型,占1个字节,n3为float型,在TC2.0中系统会用双精度处理,占8个字节,2+1+8=11,根据程序来应该是这个结果。

回答3:

union联合体里面只能算一个数据,最长那个,并不是所有的数据长度都要算进行的

回答4:

2+1+4+2*2=11