首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【简单,却难于作答】union中的字节对齐解决方案

2012-02-11 
【简单,却难于作答】union中的字节对齐既然st_a已经占了6个字节,为什么union不就取这些空间呢?union的8个字

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

热点排行