【C/C++】位段

news/2025/2/13 7:46:21/

零.导言

        位段,对初学者来说是一个相对陌生的概念。今天,我将简单的介绍位段的概念。

先说结论:位段和结构体是类似的,并且在空间储存上战友,但同时存在难以跨平台的弊端。


一.位段的声明

        我们来简单看一下结构体和位段的区别:

//这是结构体struct SeqList
{int arr*;int size;int capacity;
};

        以上是结构体。

//位段struct A
{int _a:2;int _b:4;int _c:8;int _d:12;
};

        以上是位段。

        可以看出,结构体和位段是极为相似的,其中一个区别在于位段在变量名后加了一个冒号和一个数字,用于确定开辟的空间大小。


二.位段的内存分配

        关于位段的内存分配,有几点要特别注意,和结构体不同:

  1.          位段的成员只能是 int, unsigned int,signed int,char等类型。
  2.          位段的空间上是按照需要以4个字节(int)或者1个字节(char)的方式来开辟的
  3.          位段涉及很多不稳定因素,难以跨平台。

        从此可以看出:位段可以精细的控制变量所用空间大小,有占用空间小的优点。


三.位段的跨平台问题

  1.         int 位段被当成有符号数还是无符号数是不确定的。
     
  2.         位段中最大位的数目不能确定。(比如16位机器最大位是16,32位机器最大位是32)
     
  3.         位段中的成员在内存中从左向右分配,还是从右向左分配,标准尚未定义。
     
  4.         当一个结构包含两个位段,第二个位段成员比较大,无法容纳于第一个位段剩余的位时,是舍弃剩余的位还是利用,这是不确定的。

        综上所述:当所写程序涉及跨平台时,还是推荐使用位段而非结构体。


四.相关链接

        【C/C++】结构体的定义-CSDN博客



http://www.ppmy.cn/news/1571644.html

相关文章

深度卷积神经网络实战海洋动物图像识别

本文采用深度卷积神经网络作为核心算法框架,结合PyQt5构建用户界面,使用Python3进行开发。YOLOv11以其高效的特征提取能力,在多个图像分类任务中展现出卓越性能。本研究针对5种海洋动物数据集进行训练和优化,该数据集包含丰富的海…

JVM(Java 虚拟机)

Java语言的解释性和编译性(通过JVM 的执行引擎) Java 代码(.java 文件)要先使用 javac 编译器编译为 .class 文件(字节码),紧接着再通过JVM 的执行引擎(Execution Engine&#xff09…

【uniapp-小程序】实现方法调用的全局tips弹窗

【uniapp-小程序】实现方法调用的全局tips弹窗 开发背景弹窗组件全局调用封装配置项入参全局注入使用 附带:如何在uniapp-H5项目中实现全局自定义弹窗组件定义定义vue插件引入 笑死,只有在想找工作的时候才会想更新博客。 开发背景 本来是个uniapp开发…

MFC程序设计(十二)绘图

只有类对象和绘图设备句柄进行绑定,该类对象才可以进行绘图 相关类 m_hDC和m_hAttribDC保存了同一个绘图设备句柄 CPaintDC类和CClientDC类继承于CDC类 CPaintDC类在WM_PAINT消息的OnPaint消息处理函数中使用,CClientDC类在其他消息,如COM…

3.2 > Bash

概览 在上一节中我们了解了关于 Shell 的执行流程,知道了在 Linux 环境中一般有哪些常用的 Shell。而在本节中,将会学习到 Linux 中最常见的一个 Shell —— Bash,了解到 bash 的相关知识和用法。 本节目录 概览相关知识bash 命令提示符bas…

k8s管理工具之lens

什么是lens Lens 是当前市场上最强大的K8S IDE。它是一个独立的单机应用,可以同时运行在macOS、Windows和Linux上。 作为K8S IDE,该有的它基本都有了! 集群管理 导入已有集群 首先,你需要在 Lens 中添加你的 Kubernetes 集群。点…

【蓝桥杯嵌入式】8_IIC通信-eeprom读写

全部代码网盘自取 链接:https://pan.baidu.com/s/1PX2NCQxnADxYBQx5CsOgPA?pwd3ii2 提取码:3ii2 1、电路图 这个电路允许通过I2C总线与EEPROM(M24C02-WMN6TP)和数字电位器(MCP4017T-104ELT)进行通信。EEPROM用于存储数据,而数字电位器可以用…

基于 Gauss 公式的日期计算

Gauss 公式(或称 Gauss 算法)是一种用于日期计算的经典数学方法,主要用于将一个给定的天数(从某个固定日期开始计算的天数)转换为具体的年、月、日。 Gauss 公式的核心思想是基于闰年规则 和天数累积规律 ,…