位段
什么是位段?
位段,C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“位域”( bit field) 。利用位段能够用较少的位数存储数据。
位段的声明
位段的声明和结构是类似的,有两个不同:
- 位段的成员必须是 int、unsigned int、 signed int、char 整形家族。
- 位段的成员后面有一个冒号和数字。
struct A
{
int a : 2; //这里的2是比特位
int b : 5;
int c : 10;
int d : 30;
};
int main()
{
printf("%d\n", sizeof(struct A)); //8
return 0;
}
位段的大小
- 一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。
- 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。
- 位域可以无位域名,这时它只用来作填充或调整位置。无名的位域是不能使用的。
枚举
在