223 字
1 分钟
【C】位域
位域(bit-field)是结构体成员的一种特殊形式,用于按位打包存储,节省空间。
语法
struct Flags { unsigned int a : 4; // 占 4 位 unsigned int b : 3; // 占 3 位 unsigned int c : 1;};规则与限制
- 位域成员类型须为
int、unsigned int、signed int(或 C99 起_Bool等实现允许的类型) - 不能对位域成员取地址(
&) - 不能单独对位域使用
sizeof成员;结构体整体sizeof仍受对齐规则影响 - 指定位数不能超过该类型可表示的宽度(实现相关,通常不超过类型位宽)
- 具体布局(从低位还是高位填充)实现定义,跨平台勿依赖位级布局
使用场景
- 硬件寄存器、协议报文头中的标志位
- 需要精确控制存储位数时
示例
struct Number { int a : 4; // 通常表示 -8~7 或有符号范围,依实现};修改位域时只影响对应位段;读写仍通过结构体成员名访问。
分享
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时
相关文章 智能推荐
