首页 新闻 会员 周边

关于结构体内使用位域

0
悬赏园豆:20 [已解决问题] 解决于 2014-04-10 21:52
struct Bitsfield
{
    int a:1;
};
// 敢问sizeof(Bitsfield)等于多少?
// 1Byte?还是等于sizeof(int)?

此帖意在提问,结构体的size是否和这个成员a的类型有关?不过实际a又只使用一个位。

鱼木的主页 鱼木 | 初学一级 | 园豆:184
提问于:2014-04-09 09:18
< >
分享
最佳答案
0

根据运行结果是sizeof(int), 虽然按位对齐,但是结构体占用的空间又受成员最大数据类型的影响(这是结构体本身的规则)!

收获园豆:10
清清飞扬 | 菜鸟二级 |园豆:212 | 2014-04-09 09:50

好吧, 既然客官来应答.我决定一人分10分给你们.

我只是想提问一个结构体中使用位域, 这个结构的Size是否和位域具体类型有关.

struct Bits { int a:1; };

struct Bys { int a; };

试问  以下几个size是否相等;

sizeof(Bits);

sizeof(Bys);

sizeof(int);

结果都相等?是否有标准可参?

鱼木 | 园豆:184 (初学一级) | 2014-04-10 21:48
其他回答(1)
0

都说是bit了,你还问1Byte?

等于sizeof(int)的,只是a只占一个二进制位

struct Bitsfield { int a:1; int b:1;};这个也是4

收获园豆:10
t514528359 | 园豆:214 (菜鸟二级) | 2014-04-09 09:49

好吧, 既然客官来应答.我决定一人分10分给你们.

我只是想提问一个结构体中使用位域, 这个结构的Size是否和位域具体类型有关.

struct Bits { int a:1; };

struct Bys { int a; };

试问  以下几个size是否相等;

sizeof(Bits);

sizeof(Bys);

sizeof(int);

结果都相等?是否有标准可参?

支持(0) 反对(0) 鱼木 | 园豆:184 (初学一级) | 2014-04-10 21:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册