union data {
double number2;
char name[20];
};
int main() {
printf("%i\n", sizeof(union data));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我预计它是 20,因为它是最大的,但结果是 24。
Igo*_*nik 11
除了最大成员的大小之外,工会还必须考虑具有最严格对齐要求的成员的对齐。double必须在 8 字节边界上对齐,因此联合的大小必须是 8 的倍数。否则在 的数组中data, 的某些实例number2会未对齐。