Skip to content

C 位域(Bit-fields)

位域允许按位分配存储,用于紧凑表示标志或小范围数值。注意可移植性与实现细节。

1. 定义

c
struct Flags {
    unsigned a:1;
    unsigned b:3;
    unsigned c:4; // 总计 8 位
};

2. 存储布局(实现相关)

  • 位域的顺序、端序、跨字节打包方案依赖编译器与平台
  • 不能依赖其二进制布局进行跨平台序列化

3. 类型与溢出

  • 建议使用 unsigned 类型的位域
  • 超出位宽的赋值会被截断

4. 与整型联合使用(调试/序列化)

c
union U {
    struct Flags f;
    unsigned char raw;
};

5. 小结

位域适合紧凑标志存储,但不要用于需要严格二进制兼容的场景;跨平台需自行定义打包规则。

本站内容仅供学习和研究使用。