位域允许将一个字节拆开来用
位域的使用
在结构体定义时,在结构体成员后面使用冒号(:)和数字来表示该成员所占的位数。
#include<stdio.h>
int main(void)
{
struct Test
{
unsigned int a:1; //变量a只能存放两个位的数据
unsigned int b:2; //变量b只能存放两个位的数据,如果将b的位域改为1,则整数2就放不进去。
unsigned int c:1; //变量c只能存放两个位的数据
} ;
//C语言规定位域的宽度不能超过其所依附数据类型的宽度,比如这里的整型的位域不能超过32位。
struct Test test;
test.a = 0;
test.b = 2;
test.c = 1;
printf("a = %d, b = %d, c = %d\n",test.a, test.b, test.c);
printf("size of test = %d\n", sizeof(test));
return 0;
}
不能对位域进行取址操作