结构体占用内存大小计算中遇到的问题

struct st
{
    double d;
    char c;
    short l;
    int i;
}w;
int main()
{
    printf("%d\n", sizeof(short));
    printf("%d", sizeof(w));  //此时我输出的是16
}

但是倒个次序就变成24了


struct st
{
    double d;
    char c;
    int i;
    short l;     //int和short倒了个次序
}w;
int main()
{
    printf("%d\n", sizeof(short));
    printf("%d", sizeof(w));    //这里就变成24了
}

不应该都可以补在char类型对齐空出来的那7个里面么,为啥倒一倒就不行了。想半天想不通哇

参考:

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632