当前位置: 首页 > news >正文

C/C++位域(位段)示例总结

前言

昨天听同事们谈起位域的用法,发现自己的记忆已经开始模糊了,所以写了几个小例子测试一下,因此记录一下方便后续查找。

具体示例

  1. 不能对位域成员使用sizeof操作符


    1

    上述代码会报编译错误,因为在19行对位域的成员使用了sizeof操作符,具体错误如下图所示:


    2

  2. 对于网上流传的“由于位域不允许跨两个字节,因此位域的长度不能大于一个字节”的说法不能理解


    3

    程序输出结果如下:


    4

    通过输出结果可以知道,对objBit.a的赋值,超出的它所能表示的范围,所以超出的部分被截断,只保留了范围内的值,并且这个例子中的objBit.bobjBit.c也可以证明位域的长度可以超过一个字节,其中的大于256的数值可以正常存储。

  3. 位域成员的位长度不能超过类型本身的长度


    5

    如果像图中这样定义位域就会导致编译错误


    6

    图中的编译错误说明变量e后面的值不能超过32,如果e的类型是unsigned char,那么e后面的定义不能超过8,难道说网上流传的说法“由于位域不允许跨两个字节,因此位域的长度不能大于一个字节”指的是这个,现在还不能确定。

相关文章:

  • mysql 诡异的1054错误
  • UE4引擎取消编辑器处于后台时的降帧选项
  • Lua的函数参数为table时奇特现象
  • UE4引擎自定义插件导出类定义的简单流程
  • Lua收到C++传入的参数类型有一种userdata
  • Lua中可完美运行的三目运算符
  • Lua中 'local xxx do ... end' 到底表达了什么
  • Python树形打印目录结构
  • 排序算法系列之(二)——冒泡排序名字最为形象的一个
  • Python查找文件中包含中文的行
  • sscanf类似于正则表达式的进阶用法
  • mysql函数扩展之UDF开发
  • Python实现一个简单的图片爬虫
  • 验证mysql联合索引最左原则
  • Mysql查询时case when语句的使用
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • canvas实际项目操作,包含:线条,圆形,扇形,图片绘制,图片圆角遮罩,矩形,弧形文字...
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Java 最常见的 200+ 面试题:面试必备
  • javascript从右向左截取指定位数字符的3种方法
  • Java新版本的开发已正式进入轨道,版本号18.3
  • laravel5.5 视图共享数据
  • Python学习之路16-使用API
  • Sequelize 中文文档 v4 - Getting started - 入门
  • Zepto.js源码学习之二
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 技术发展面试
  • 利用DataURL技术在网页上显示图片
  • 前端存储 - localStorage
  • 深度学习中的信息论知识详解
  • 实战:基于Spring Boot快速开发RESTful风格API接口
  • 王永庆:技术创新改变教育未来
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 因为阿里,他们成了“杭漂”
  • 用Python写一份独特的元宵节祝福
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ()、[]、{}、(())、[[]]命令替换
  • (12)Hive调优——count distinct去重优化
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (算法)Travel Information Center
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转载)从 Java 代码到 Java 堆
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .Net Memory Profiler的使用举例
  • .NET中的十进制浮点类型,徐汇区网站设计
  • // an array of int
  • [20180129]bash显示path环境变量.txt
  • [Angularjs]asp.net mvc+angularjs+web api单页应用之CRUD操作
  • [BZOJ] 2006: [NOI2010]超级钢琴
  • [ChromeApp]指南!让你的谷歌浏览器好用十倍!
  • [codeforces]Checkpoints