C++ 涉及到位域的sizeof

来源:互联网 发布:广州淘宝拍摄基地 编辑:程序博客网 时间:2024/06/05 23: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;  }  

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

0 0
原创粉丝点击