首页
社区
课程
招聘
[求助]一个struct大小的问题
2013-1-25 09:45 4268

[求助]一个struct大小的问题

2013-1-25 09:45
4268
struct bs
{
        int a:1;
        int b:1;
        int c:1;
        double d;
};
bs aa;
sizeof(aa) = 16;

struct as
{
        int a:1;
        int b:1;
        int c:1;
        //double d;
};
as aa;
sizeof(aa) = 4;

这是什么原因呢,是下面的as按照double的大小对齐了吗?

阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞0
打赏
分享
最新回复 (2)
雪    币: 2155
活跃值: (29)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
LiXMX 2013-1-25 10:31
2
0
bs是按照double的长度对齐了,double是8字节,所以结构体是16字节。

as是按照int对其的,int是4自己,所以结构体是4字节。
雪    币: 304
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
willianCC 2013-1-25 13:19
3
0
struct 对齐以其成员变量中最宽的数据类型作为标准。
as,bs中,a,b,c都为位域,所以as = 4 字节
bs中,d占8个字节,以8字节对齐,8+8=16
游客
登录 | 注册 方可回帖
返回