进一步问位域的有关问题!

进一步问位域的问题!!急急急!!!structdata{unsignedchard1:4unsignedchard2:2unsignedchard3:2unsigned

进一步问位域的问题!!急急急!!!
struct   data
{
unsigned   char   d1:4;
unsigned   char   d2:2;
unsigned   char   d3:2;
unsigned   short   d4;
unsigned   char   d5;

};
........
使用printf( "%d\n ",sizeof(data))时,显示的是6.


struct   data
{
unsigned   char   d1:4;
unsigned   char   d2:2;
unsigned   char   d3:2;
unsigned   char   d5;
unsigned   short   d4;//
};

但是这里使用printf( "%d\n ",sizeof(data))时,显示的是4.

上面一个是按最大的内置类型对齐,即2*3=6
但是后面一个却又是4,不知道为什么这时候不按最大的内置类型对齐啊!

[解决办法]
还问呀。
不是给你说得很清楚了嘛