新闻  |   论坛  |   博客  |   在线研讨会
位域与共用体
mayer | 2009-07-13 18:22:28    阅读:1643   发布文章

位域与共用体

 

 

作者:曹忠明,华清远见嵌入式学院讲师。

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

struct 位域结构名{
                  <位域列表>
        };

     位域列表如下;

struct data{
              unsigned int a:2;
              unsigned int b:3;
              unsigned int c:3;
        };

其中a表示data的低两位,表示data的3~5为,c表示data的6~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;

}

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客