读书人

【简单却难于作答】union中的字节对

发布时间: 2012-02-11 09:51:34 作者: rapoo

【简单,却难于作答】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

读书人网 >C语言

热点推荐