- #include
- union un1
- {
- int a;
- char b;
- };
- union un2
- {
- char str[5];
- int c;
- };
- void main()
- {
- union un1 u1;
- union un2 u2;
- u1.a =0x11223344;
- //u1.b = 0x55;
- printf("%d\n",sizeof(union un1));
- printf("%d\n", sizeof(union un2));
- printf("%x\n",u1.a);
- //printf("%x\n", u1.b);
- }

因为u1中数据类型最大的占4个字节,所以u1大小为4字节。因为u2中有一个字符串数组,最大为5字节,但是对齐的话得对齐最大数据类型的整数倍。也就是8。