下面C程序的输出结果是(windows 32位机)
struct MyStruct { int i; char c; struct InnerStruct { int i; long l; double d; char c; } innerStruct; }; union MyUnion { int i; char c; }; int main() { printf("%d, %d", sizeof(MyStruct), sizeof(MyUnion)); }
// 结构体最终的size应该为成员里最大的整数倍 struct MyStruct { int i; // 4 bytes char c; // 1 bytes char padding1[3]; // 3 bytes for alignment struct InnerStruct { int i; // 4 bytes long l; // 4 bytes double d; // 8 bytes char c; // 1 bytes char padding2[7]; // 7 bytes for alignment } innerStruct; }; // 联合体size为成员里最大的那个