223 字
1 分钟
【C】位域
2026-05-19

位域(bit-field)是结构体成员的一种特殊形式,用于按打包存储,节省空间。

语法#

struct Flags {
unsigned int a : 4; // 占 4 位
unsigned int b : 3; // 占 3 位
unsigned int c : 1;
};

规则与限制#

  • 位域成员类型须为 intunsigned intsigned int(或 C99 起 _Bool 等实现允许的类型)
  • 不能对位域成员取地址(&
  • 不能单独对位域使用 sizeof 成员;结构体整体 sizeof 仍受对齐规则影响
  • 指定位数不能超过该类型可表示的宽度(实现相关,通常不超过类型位宽)
  • 具体布局(从低位还是高位填充)实现定义,跨平台勿依赖位级布局

使用场景#

  • 硬件寄存器、协议报文头中的标志位
  • 需要精确控制存储位数时

示例#

struct Number {
int a : 4; // 通常表示 -8~7 或有符号范围,依实现
};

修改位域时只影响对应位段;读写仍通过结构体成员名访问。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

【C】位域
https://lysj.work/posts/studynotes/c/c位域/
作者
Sekiro
发布于
2026-05-19
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录