首先,我了解结构中的字节填充。但是我仍然有一个小测试在结构中包含一个双字段,我不知道如何解释:
typedef struct {
char a;
double b;
}data;
typedef struct{
char a;
int b;
}single;
int main(){
printf("%d\n",sizeof(double));
printf("%d\n",sizeof(single));
printf("%d\n",sizeof(data));
}
通过这个测试,答案是:8
8
和16
。
为什么这个结果让我思考?
通过第二次测试,我们可以看到我机器上的字大小是 4 个字节。
通过第一次测试,我们可以看到 double 的大小是 8 个字节。
因此,在 struct 处data
:结果应该是 12 个字节:char 为 4 个字节,double 为 8 个字节。
但是,我不知道为什么结果是 16 个字节。(对我来说很奇怪)
请帮我解释一下,谢谢:)