C语言 sizeof(struct),当struct中出现数组时的结果变化

img

运行结果为24,但根据对变量的对齐,结果应该是7的倍数,例如按我计算应该是:4+1+3+4+2+7=21,但运行结果并不如此,希望
帮忙解决一下。

没问题,但是整体的结构体大小应该需要是最大的那个变量的倍数

对齐是4字节对齐。不是最大字节对齐。
int 4字节
char 1字节,对齐为4字节
float 4字节
short 2字节 对齐为4字节
数组 7字节 对齐为8字节
总共16+8=24

不够四的补为4,大于四小于八补为8,总是4的倍数