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

C语言基础语法复习08-位域bit-fields

在c2011 iso文档中,位域与struct、union是一起定义的:

Structure and union specifiers
Syntaxstruct-or-union-specifier:struct-or-union identifier opt { struct-declaration-list }struct-or-union identifierstruct-or-union:structunionstruct-declaration-list:struct-declarationstruct-declaration-list struct-declarationstruct-declaration:specifier-qualifier-list struct-declarator-list opt ;static_assert-declarationspecifier-qualifier-list:type-specifier specifier-qualifier-list opttype-qualifier specifier-qualifier-list optstruct-declarator-list:struct-declaratorstruct-declarator-list , struct-declaratorstruct-declarator:declaratordeclarator opt : constant-expression

以上最后定义的就是位域,其中opt表示类型declarator可选。
unsigned int:0; 无名0bit表示开始新的unsigned int。
位域不必在字节的起点开始,故不能取位域的地址。
不可能有指向位域的指针。
不能对位域使用 sizeof 和 _Alignas。
_Bool x:1;取值范围0、1,size只能为1
int x:3; 最好改为signed int x:3;定义,明确取值范围为-4到3.
int 、 signed int 、 unsigned int 及 _Bool之外的类型未定义,编译器实现决定。
原子类型修饰未定义,编译器决定。
位域是否可以越过类型边界未定义,编译器决定。
位域打包顺序未定义,编译器决定。

C++ 编程语言中,位域的宽度能超出底层类型,并且 int 类型的位域始终为有符号。

struct-or-union-specifier:结构体或联合体说明符
struct-or-union:结构体或联合体
struct-declaration-list:结构体声明列表
struct-declaration:结构体声明
specifier-qualifier-list:说明符限定符列表
type-specifier:类型说明符
type-qualifier:类型限定符
struct-declarator-list:结构体声明符列表
struct-declarator:结构体声明符
declarator:声明符
constant-expression:常量表达式

以上语法定义可能是EBNF的一种变体。
iso-14977-EBNF.pdf

http://www.lryc.cn/news/187019.html

相关文章:

  • 3.2.OpenCV技能树--二值图像处理--图像腐蚀与膨胀
  • 基于FPGA的数字时钟系统设计
  • linux centos Python + Selenium+Chrome自动化测试环境搭建?
  • mysql面试题20:有哪些合适的分布式主键方案
  • git的基础操作
  • lua 中文字符的判断简介
  • SSM-XML整合
  • 线性代数小例子
  • ASP.NET Core 开发 Web API
  • QImage函数setAlphaChannel
  • 区块链、隐私计算、联邦学习、人工智能的关联
  • Unity可视化Shader工具ASE介绍——4、ASE的自定义模板使用
  • FastAPI学习-22.response 异常处理 HTTPException
  • 75.颜色分类
  • 浅谈分散式存储项目MEMO
  • ansible角色运行指定角色路径
  • 【数据结构-字符串 三】【字符串转换】字符串解码
  • LabVIEW中不同颜色连线的含义
  • 如何才能在Ubuntu系统部署RabbitMQ服务器并公网访问
  • PCL点云处理之使用变换矩阵对点云去中心化(二百零七)
  • ubuntu编译安装并测试opencv
  • Vue3最佳实践 第七章 TypeScript 上
  • 【maven私库nexus开机自启动】
  • ctfshow-web5(md5弱比较)
  • 【GIT版本控制】--子模块
  • 享元模式 基于享元模式的对象池设计与开发应用(设计模式与开发实践 P12)
  • postman测试文件上传接口教程
  • 【bug日记】spring项目使用配置类和测试类操作数据库
  • Django之主键外键详解
  • HDLbits: ece241 2014 q7b