.位域与共用体

    技术2022-05-19  40

    C语言提供了“位域”或者称为“位段”这种结构体,将一个字节中的二进制位划分为几个部分,每个域有一个域名,可以通过这个域名对对应的位进行操作。其定义域说明和使用语结构体相似,为:

    struct 位域结构名{

           <位域列表>

    };

    位域列表如下;

    struct data{

           unsigned int a2

           unsigned int b3

           unsigned int c3

    }

    其中a表示data的低两位,表示data3~5为,c表示data6~8位。

     

    C语言中,不同的成员使用共同的存储区域的数据构造类型称为共用体,简称共用,又称联合体。共用体占用空间的大小取决于类型长度最大的成员。共用体在定义、说明和使用形式上与结构体相似。

    定义一个共用体类型的一般形式为:

    union 共用体名

    {

           <成员表列>

    };

    看一个具体的例子:

     union  un

     {

        char c

        short s;

        int i

     }myun

     

    将共用体和位域结合起来,如下

    #include <stdio.h>

     

    union{

           struct{

                  unsigned int x1:2;

                  unsigned int x2:3;

    unsigned int x3:3;

    }x;

    char y;

    }data;

     

    int main()

    {

           data.x.x1=3;

           data.x.x2=4;

           data.x.x3=5;

     

           printf(“%d /n”,data.y);

          

           return 0;

    }

    通过结果可以看出,这个过程相当于为data.y按二进制位赋值。可以更加方便的对其进行操作。


    最新回复(0)