事实上":1"代表的是1个bit
如下所示代码
struct bit_text_{
uint8_t bit_test0 : 1;
uint8_t bit_test1 : 1;
uint8_t bit_test2 : 1;
uint8_t bit_test3 : 1;
uint8_t bit_test4 : 1;
uint8_t bit_test5 : 1;
uint8_t bit_test6 : 1;
uint8_t bit_test7 : 1;
};
":“冒号在C语言中是位域的用法,主要是用来减少内存的占用
当然你也可以”:4"来占用4个bit位置。
以下来自https://zhidao.baidu.com/question/1958171216879892260.html
“知道大有可为答主”的回答
那么定义一个位段结构可以像下面这段代码去定义:
struct node
{
unsigned int a:4; //位段a,占4位
unsigned int :0; //无名位段,占0位
unsigned int b:4; //位段b,占4位
int c:32; //位段c,占32位
int :6; //无名位段,占6位
};
1)位段的类型只能是int,unsigned int,signed int三种类型,不能是char型或者浮点型;
2)位段占的二进制位数不能超过该基本类型所能表示的最大位数,比如在VC中int是占4个字节,那么最多只能是32位;
3)无名位段不能被访问,但是会占据空间;
4)不能对位段进行取地址操作;
5)若位段占的二进制位数为0,则这个位段必须是无名位段,下一个位段从下一个位段存储单元(这里的位段存储单元经测试在VC环境下是4个字节)开始存放;
6)若位段出现在表达式中,则会自动进行整型升级,自动转换为int型或者unsigned int。
7)对位段赋值时,最好不要超过位段所能表示的最大范围,否则可能会造成意想不到的结果。
8)位段不能出现数组的形式。