位段 (bit field)也叫位域

位段的声明和结构类似,但是它的成员是一个或多个位的字段,这些不同长度的字段实际上存储于一个或多个×××变量中。

位段的声明和任何普通成员声明相同,有两个例外:

1.位段成员必须声明为int signed int(有符号整型),unsigned int(无符号整型)

2.成员名后面是一个冒号和一个整数,这个整数指定该位段所占用位的数目。

Eg

#include<stdio.h>                            
#include<stdlib.h>
 
struct s
{
int i : 2;   //占2位
int j : 5;   //占5位
int k : 30;  //占30位
};
 
int main()
{
printf("%d\n", sizeof(struct s));
getchar();
return 0;
}


运行结果:

8

wKioL1bZfwnzkO0OAABNoHAFltQ558.png