0
点赞
收藏
分享

微信扫一扫

详解“位段”

乱世小白 2022-01-25 阅读 75

序言

位段

struct A
{
    int _a : 1;  //1 代表_a占据一个bit位
    int _b : 4;
    int _c : 5;
};

位段的优点

  • 可以使数据单元节省储存空间
  • 位段可以很方便的访问一个整数值的部分内容从而可以简化程序源代码

位段的缺点

  • 其内存分配与内存对齐的实现方式依赖于具体的机器和系统,在不同的平台可能有不同的结果,这导致了位段在本质上是不可移植的
  • 位段成员必须是整形或枚举类型(通常是无符号类型),且在成员名的后面是一个冒号和一个整数
  • 位段中int不能确定是否是有符号还是无符号的

位段的大小

struct S
{
    char a: 3;
    char b: 4;
    char c: 5;
    char d: 4;
};

方式一 – 浪费

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

方式二 – 不浪费

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

struct S
{
    char a: 3;
    char b: 4;
    char c: 5;
    char d: 4;
    
};
int main()
{
    
    printf("%d", sizeof(struct S));
    return 0;
}

在这里插入图片描述

数据的存储

#include<stdio.h>
struct S
{
    char a: 3;
    char b: 4;
    char c: 5;
    char d: 4;
    
};
int main()
{
    struct S s = { 0 };
    s.a = 10;
    s.b = 12;
    s.c = 3;
    s.d = 4;
    return 0;
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

位段的应用

在这里插入图片描述

举报

相关推荐

0 条评论