注册 登录
编程论坛 C++教室

应该是18的,为什么输出24,求解答

李猛 发布于 2014-03-14 20:52, 419 次点击
#include <iostream.h>
void main(void)
{
    union  un
    {  int  i;
       double  y;
    };
    struct  st
    {  char  a[10];
        union un b;
    };
    cout<<sizeof(struct st)<<endl;
}
2 回复
#2
rjsp2014-03-14 22:55
为什么是18?
凭什么不可以在a和b之间插入6个无用字节从而使得b在8字节上对齐?
c/c++未禁止的,就是可以的,不能想当然。
我用手机,输入不便。c/c++只要求空间存得下数据就行,没有要求空间正好不得浪费。
#3
李猛2014-03-21 09:48
回复 2楼 rjsp
明白了,谢谢
1