char a: 3先分配空间一个char=1字节=sizeof(char)=8位的空间,a占前3位,然后char b: 3发现a那里还空6位所以直接把b放进去,接着char c: 3发现a那里还空2位放不下3位,所以另外分配一个char的空间,以此类推,最后的结果是
char a: 3和char b: 3占一个字节,后两位用来对齐
char c: 3和char d: 3占一个字节,后两位用来对齐
char e: 3和char f: 3占一个字节,后两位用来对齐
char g: 3和char h: 3占一个字节,后两位用来对齐
char i: 3和char j: 3和char : 2占一个字节。
总共5个字节
如果换成int,int a : 3先分配1个int=4个字节 =32位的空间,a占前3位然后把剩下的b c d ....全放进去才满32位,总共4个字节。
union的size取最大的字段,所以resolve无关紧要。
char a: 3和char b: 3占一个字节,后两位用来对齐
char c: 3和char d: 3占一个字节,后两位用来对齐
char e: 3和char f: 3占一个字节,后两位用来对齐
char g: 3和char h: 3占一个字节,后两位用来对齐
char i: 3和char j: 3和char : 2占一个字节。
总共5个字节
如果换成int,int a : 3先分配1个int=4个字节 =32位的空间,a占前3位然后把剩下的b c d ....全放进去才满32位,总共4个字节。
union的size取最大的字段,所以resolve无关紧要。