c语言 位域 sizeof,含位域结构体的sizeof
使用位域的主要目的是壓縮存儲,其大致規則為:
1)?如果相鄰位域字段的類型相同,且其位寬之和小于類型的sizeof大小,則后面的字段將緊鄰前一個字段存儲,直到不能容納為止;
2)?如果相鄰位域字段的類型相同,但其位寬之和大于類型的sizeof大小,則后面的字段將從新的存儲單元開始,其偏移量為其類型大小的整數倍;
3)?如果相鄰的位域字段的類型不同,則各編譯器的具體實現有差異,VC6采取不壓縮方式,Dev-C++采取壓縮方式;
4)?如果位域字段之間穿插著非位域字段,則不進行壓縮;
5)?整個結構體的總大小為最寬基本類型成員大小的整數倍。
測試:
struct test
{
char a:1;
char :2;
long b:3;
char c:2;
};
test t1;
int len=sizeof(t1);?? //len=12
struct test
{
char a:1;
char :2;
char b:3;
long c:2;
};
test t1;
int len=sizeof(t1);?? //len=8
struct test
{
char a:1;
char :2;
char b:3;
char c:2;
};
test t1;
int len=sizeof(t1);?? //len=1
=============================================================================
http://www.cppblog.com/fwxjj/archive/2006/12/18/16572.html
閱讀(3884) | 評論(0) | 轉發(1) |
總結
以上是生活随笔為你收集整理的c语言 位域 sizeof,含位域结构体的sizeof的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言浮点乘法 溢出,浮点加减乘除运算各
- 下一篇: ios c语言编译环境搭建,iOS开发之