C语言--位段

C语言---位段

文章目录


一、位段是什么?

位段的声明和结构是类似的,有两个不同:

  1. 位段的成员必须是 intunsigned intsigned int
  2. .位段的成员名后边有一个冒号和一个数字

位段的位指的是 二进制位

c 复制代码
struct A
{
 int _a:2;//占用2个2进制位
 int _b:5;
 int _c:10;
 int _d:30;
};
  • 位段其实用法和结构体一样,只是比结构体更加节省空间

二、位段的内存分配

  1. 位段的成员可以是 int unsigned int signed int 或者是 char (属于整形家族)类型
  2. 位段的空间上是按照需要以4个字节( int )或者1个字节( char )的方式来开辟的。
  3. 位段涉及很多不确定因素,位段是不跨平台的,注重可移植的程序应该避免使用位段。

三,位段的跨平台问题

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

四,位段的应用

相关推荐
你的冰西瓜20 分钟前
C++标准模板库(STL)全面解析
开发语言·c++·stl
李绍熹1 小时前
c语言字符串操作示例
c语言
徐先生 @_@|||1 小时前
(Wheel 格式) Python 的标准分发格式的生成规则规范
开发语言·python
利剑 -~1 小时前
jdk源码解析
java·开发语言
Damon_X1 小时前
extern “C“
c语言
Predestination王瀞潞1 小时前
JDK安装及环境变量配置
java·linux·开发语言
lsx2024061 小时前
Python break 语句详解
开发语言
hmbbcsm1 小时前
python做题小记(八)
开发语言·c++·算法
wyzqhhhh2 小时前
京东啊啊啊啊啊
开发语言·前端·javascript
JIngJaneIL2 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端