新手提问,关于C语言共用体字节数

遇到有关共用体字节数的题目,于是我用写了一小段代码输出共用体的字节数,但发现了一点问题:
#include
#include
#include
int main(){
union aa{
int x,y;
char c[6];
}a;
printf("%d", sizeof(a));
return 0;
}

当共用体只有字符数组c时,共用体字节数为6
图片说明

只有x,y时,字节数为4
图片说明

问题来了:
当两者都有时,按照理论,共用体字节数应该为6,但运行结果是8
图片说明

这是为什么呢?

内存对齐的原因。
参考:http://m.jb51.net/article/45406.htm

32位机,分配以4的倍数为基数。