C语言-位域

定义语法

struct
{
    类型 变量 : 长度
};
元素 描述
类型 只能为 int(整型),unsigned int(无符号整型),signed int(有符号整型) 三种类型,决定了如何解释位域的值。
变量 位域的名称。
长度 位域中位的数量。宽度必须小于或等于指定类型的位宽度。

C位域应用场景

常用于指定内存大小,比如 那些bool类型的数据,对于这些类型,它只要一个长度就可以了!

C位域示例

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct Test
{
    unsigned a : 1;
    unsigned b : 2;
};

int main()
{

    struct Test test;

    test.a = 1;
    test.b = 10;

    printf("a = %d, b = %d \n", test.a, test.b);

    return 0;
}

运行结果为

a = 1, b = 2

注意 %d 表示整形, unsigned 表示二进制, 2 的二进制为10!