【简单,却难于作答】union中的字节对齐
既然st_a已经占了6个字节,为什么union不就取这些空间呢?
union的8个字节是如何组织的?
- C/C++ code
#include "stdio.h"void main(){ union { long a; struct { char a1;//第一个字节a1,第二字节为填充位 short a2;//第三第四字节为a2 char a3;//第五字节a3,第六字节为填充位 }st_a; }un_a; printf("%d %d\n",sizeof(un_a.st_a),sizeof(un_a)); return;}[解决办法]
理解Lz的意思st_a占了6各字节,但是un_a却占了8各自节。为什么不是6呢
[解决办法]
低级问题,查msdn去吧,比你在这里看一百个回复都好使
[解决办法]
union 的对齐方式为成员中对齐方式最大的成员的对齐方式,本题应为long的对齐方式是4,
struct的大小6按4对齐应为8,所以sizeof(un_a)为8