C++ 涉及到位域的sizeof

来源:互联网 发布:如何定义一个新数组 编辑:程序博客网 时间:2024/05/20 07:54

位域的几项准则:

1:如果相邻位域字段的类型相同,且其位域宽度之和小于类型的sizeof大小,则后面的位域将紧邻前一个字段存储,直到不能容纳为止

2:如果相邻位域字段的类型相同,且其位域宽度之和大于类型的sizeof大小,则后面的位域将从新的存储单元开始,且其偏移量为其类型大小的整数倍

3:如果相邻位域字段的类型不相同,则各编译器的实现方式不同,VC6采取不压缩的方式,DEV_C++采取压缩的方式

4:如果位域字段之间穿插着非位域字段,则不进行压缩

5:整个结构体的大小为最宽基本类型成员大小的整数倍


样例:

#include <iostream>using namespace std;int main(int argc, char** argv){struct A {int a:4;int b:3;char c;};struct B {int a:20;int b:20;char c;};struct C {int a:2;char b:3;int c;};cout<<sizeof(A)<<endl;cout<<sizeof(B)<<endl;cout<<sizeof(C)<<endl;cin.get();return 0;}

分析一下此代码,基本上理解是没问题了~

1 0
原创粉丝点击