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. 当一个结构包含两个位段,第二个位段成员比较大,无法容纳于第一个位段剩余的位时,是
    舍弃剩余的位还是利用,这是不确定的

四,位段的应用

相关推荐
溟洵2 分钟前
Qt 窗口 工具栏QToolBar、状态栏StatusBar
开发语言·前端·数据库·c++·后端·qt
程序员编程指南35 分钟前
Qt 远程过程调用(RPC)实现方案
c语言·c++·qt·rpc·系统架构
心.c1 小时前
JavaScript单线程实现异步
开发语言·前端·javascript·ecmascript
awonw2 小时前
[python][基础]Flask 技术栈
开发语言·python·flask
木宇(记得热爱生活)2 小时前
Qt GUI缓存实现
开发语言·qt·缓存
lly2024062 小时前
C# 正则表达式
开发语言
Chef_Chen2 小时前
从0开始学习R语言--Day58--竞争风险模型
android·开发语言·kotlin
花开月满西楼2 小时前
电子设计大赛【C语言核心知识点】讲解
c语言
咖啡の猫2 小时前
bash的特性-常见的快捷键
开发语言·chrome·bash
命苦的孩子2 小时前
Java 中的排序算法详解
java·开发语言·排序算法