在C语言中,有些代码定义结构体的时候,会出现 :的使用,例如下面这一段代码
#include <stdio.h>
typedef struct test
{
unsigned int a : 1;// 有效位数是 1 bit :min 0 max 1
unsigned int b : 2;// 有效位数是 2 bits :min 0 max 3
}TEST_t;
int main()
{
/* Write C code in this online editor and run it. */
printf("Hello, World! \n");
TEST_t testTemp =
{
.a = 1,
.b = 2,
};
printf("%d %d", testTemp.a, testTemp.b);
return 0;
}
解释:
unsigned int a : 1;// 有效位数是 1 bit :min 0 max 1
unsigned int b : 2;// 有效位数是 2 bits :min 0 max 3
当将 TEST_t testTemp =
{
.a = 1,
.b = 2,
};
中的 .a=1, .b=2 改成超过1 or 3的数值时,比如.a=2 .b=4。 那么编译汇报错误,因为超过了结构体定义时的有效位限制。