C语言的位域

C语言中对数据的每一个位进行管理,可以是用位域+结构体+联合体,如下:
union dbit
{
   struct bit//结构体的最大宽度1个位,对齐时1字节对内存对齐
   {
     bool  b0:1;//对应value的最低位
     bool  b1:1;
     bool  b2:1;
     bool  b3:1;
     bool  b4:1;
     bool  b5:1;
     bool  b6:1;
     bool  b7:1;
   };
   byte value;
};

int main(int argc, char* argv[])
{

    dbit c;
    c.b0 = -1;//取值的最低位
    c.b1 = 1;
    c.b2 = 1;
    c.b3 = 0;
    c.b4 = 1;
    c.b5 = 1;
    c.b6 = 1;
    c.b7 = 0;

    printf("%d", c.value );



    getchar();
    return 0;
}
可以想到的一个应用是用来管理各种开关状态。用普通数组也能完成。用位域的话,以紧凑的方式分配内存,能节省一些空间。还有一个好处是,当宽度为1时,赋值时只有0和1两种值。

你可能感兴趣的:(C++Builder6)