注册 登录
编程论坛 C语言论坛

关于位域的结构体对齐问题

星泪成寒 发布于 2024-02-25 12:09, 928 次点击
struct st1 {
        unsigned char a:7;
        unsigned char b:2;
        unsigned char c:7;
    };


为什么是 sizeof 是 3 呢?
3 回复
#2
forever742024-02-25 17:47
就像两口子带着娃,娃说抱着不舒服,让你买三张票也是说得过去的。
#3
风吹过b2024-02-26 08:40
位域不能跨字段类型分配内存。

2楼说的对,娃不能分成二半,一边一半的。


#4
rjsp2024-02-26 08:43
不是 3 的话,你怎么安排呢? 把 b 分拆到不同的 unsigned char 中?

7+2+7 = 15,因此可以使用 short
程序代码:
struct st1 {
    unsigned short a : 7;
    unsigned short b : 2;
    unsigned short c : 7;
};

1