一道VC++问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 11:34:32
union un{int n;float x;};
struct stud{char n[6];int s[4];un b;}aa;
在32位机系统下,表达式sizeof(aa)的结果是:?
答案是 28 。为什么不是 26 呢?

因为int变量是按4字节对齐的,也就是说,虽然char n[6]只占了6个字节,但接下来的两个字节是空着的,int s[4]要从该结构的第八字节来分配。而un b占了4个字节,所以sizeof aa是28而不是26。

因为char n[6] 占用8个字节
因为为了达到最大的bus吞吐量,编译器把你的数组凑成了4字节的倍数,对于char n[6] 就变成了8