位域的理解

C语言允许在结构体中数按照位为单位存储数据。
位域的存储类型只允许signed int 或者int 类型。

  1. 位域的存储原则:类似于地址对齐
    ①当前后两个数据类型相同,写两个数据的位域宽度只和小于数据类型的位数,则后一个的数据将紧挨着前一个数据存储,否则后一个数据将从下一个存储单元开始存储。
    ②当前后两个数据类型不一样时,则第二个数据从第二个存储单元开始存储,而不是存储第一个的后面。
    ③如果位域字段之间存在非位域字段,则会从非位域字段前后截断,分别压缩存储。
    ④整个结构体的总大小为最宽基本类型成员大小的整数倍。
  2. 例子
    当两个数据类型一样的时候 ,两个数据的位宽之和5+5<16,所以连个数据存储在了同一个存储单元
    当两个数据类型一样的时候 ,两个数据的位宽之和5+5<16,所以连个数据存储在了同一个存储单元]当结构体中存在非位域字段时 从非位域字段处断开,前后分别压缩,且保证结构体大小是非位域字段的整数倍
    当结构体中存在非位域字段时 从非位域字段处断开,前后分别压缩,且保证结构体大小是非位域字段的整数倍当前后数据类型不一样时,则不会压缩存储
    当前后数据类型不一样时,则不会压缩存储
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值