举例说明:
typedef union {
char s[9];//9 bytes
int n;//4 bytes
double d;//8 bytes
}U1;
问:sizeof(U1)=_________?
分析:
U1的最长变量类型为double,8个字节,但是U1的最长变量s[9]的字节数为9,
9不能整除8,为了保持字节对齐,sizeof(U1)=16。
typedef union {
char s[5];//5 bytes
int n;//4 bytes
double d;//8 bytes
}U2;
问:sizeof(U2)=_________?
分析:
U2的最长变量类型为double,8个字节,但是U2的最长变量d的字节数为8,
8能整除8,所以sizeof(U2)=8。
总结:
联合体中最长变量的字节数必须可以整除最长变量类型!