C语言位域操作

来源:互联网 发布:mac腾讯微云同步盘 编辑:程序博客网 时间:2024/06/05 02:50

1、为了节省空间,操作方便,C语言提供一种数据结构:位域。申明如下:

    struct bitfield{        char a:2;  #a占2位        char b:3;  #b占3位        char c:2;  #c占2位    }bf;

2、基本规则:
(1)如果相邻位域字段的类型相同,且其位宽之和小于类型的sizeof大小,则后面的字
段将紧邻前一个字段存储,直到不能容纳为止;
例子:

int main(){    struct bitfield{        char a:2;        char b:3;        char c:2;    }bf;       printf("%d\n",sizeof(bf));   #  1    return 0;}

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

int main(){    struct bitfield{        char a:2;        char b:3;        char c:2;        char d:2;    }bf;    printf("%d\n",sizeof(bf)); # 2    return 0;}

3) 整个结构体的总大小为最宽基本类型成员大小的整数倍
例程:

int main(){    struct bitfield{        char a:2;        char b:3;        char c:2;        int  d:4;    }bf;    printf("%d\n",sizeof(bf));  #8    return 0;}int main(){    struct bitfield{        char a:2;        int  d;        char b:3;        char c:2;    }bf;    printf("%d\n",sizeof(bf)); #12    return 0;}
0 0
原创粉丝点击