C语言位域

目录

一、什么是位域

二、如何定义位域


一、什么是位域

//为了操作寄存器中某些位而引入位域
    在定义结构体类型时,成员变量最小类型是char,占1个字节,但是后时候需要定义一个成员只占几个二进制位,此时需要使用位域定义成员。
    
    


二、如何定义位域

     *      位域:
     *          1,空间单位---定义的数据类型的长度为一个空间单位,计算机每次按空间单位分配空间
     *          2,每一个位域变量,空间不能跨两个空间单位,如果一个空间单位剩余的空间不够分配,则在下一个ie空间单位中分配。
     * */

    struct A{
        unsigned char a:2;    //位域成员按位分配内存空间,a占2位,b占3位
        unsigned char b:3;
    };

    struct B{
        unsigned short a:10;
        unsigned short b:7;
    };

    struct C{
        unsigned char a:3;
        unsigned char :0;  //0表示占位:将当前空间单位剩余的位全部占用
        unsigned char b:4;
    };

    struct D{
        unsigned char a:3;
        unsigned char :2;  //表示占位,占a后面的2位
        unsigned char b:2;
        unsigned char c:2;
    };

    struct E{
        unsigned char a:5;
        unsigned short b:14;  //以大类型为空间单位分配内存
    };
    int main(void)
    {
        int len;
        struct A sa;

        len = sizeof(struct A);
        printf("len = %d\n",len);

        sa.a = 3;
        sa.b = 5;
        printf("sa.a = %hhd\n",sa.a);
        printf("sa.b = %hhd\n",sa.b);


        len = sizeof(struct B);
        printf("len = %d\n",len);
        len = sizeof(struct C);
        printf("len = %d\n",len);
        len = sizeof(struct D);
        printf("len = %d\n",len);
        len = sizeof(struct E);
        printf("len = %d\n",len);

        return 0;
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值