位域
来源:互联网 发布:淘宝一个差评都没有 编辑:程序博客网 时间:2024/05/05 17:39
如果结构体中含有位域,那么其规则是:
(1)如果相邻位域字段类型相同,且其位宽之和小于类型的sizeof(类型)大小,则后面的字段将紧邻前一个字段存储,直到不能容纳为止。
(2)如果相邻位域字段的类型相同,但其位宽之和大于类型sizeof大小则后面的字段将以新的存储单元开始,其偏移量为其类型大小的整数倍。
(3)如果相邻的位域字段的类型不同,则各编译器的具体实现有差异,VC6采用不压缩方式,即不同位域字段存放在不同的位域类型字节中,而GCC和Dev-C++都采用压缩方式。
struct demo1
{
int i:8;
int j:4;
int a:3;
double b;
}
对于结构体demo1,i,j,a三个位域之和为15bit,小于sizeof(int)=32bit,所以根据上述规则1,i,j,a紧邻存储在一起,共占用4个字节,b为double类型,占8个字节,根据对齐规则,b必须存储在8的整数倍地址处,于是,在存储了i,j,a之后将填充4个字节,再存储b,于是 sizeof(demo1)=4(i,j,a的长度之和)+4(填充长度)+8(b的长度)=16- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 位域
- 快速排序
- Linux安装
- IOS UITableView 可删除行实例
- “项目需求控制方法”竞赛会纪实
- android input 事件传递主要流程
- 位域
- linux 下消息队列编程
- Activity在onStop后处于什么状态
- 设计模式六大原则之(二)---里氏替换原则
- 表链接proc sql
- C# 调用带参数的控制台程序 并将命令行输出的内容实时输出至窗体中的显示控件
- android Service之一:不需和Activity交互的本地服务
- BNF和EBNF的含义及其用法
- 图像特效之怀旧风格