赞
踩
目录
1. 位段的成员必须是 int 、 unsigned int 或 signed int 。2. 位段的成员名后边有一个冒号和一个数字。
举例说明:
- struct A
- {
- int a:4;
- int b:2;
- int c:6:
- };
此时A就是一个位段类型。
注意:
举例说明:
- struct S
- {
- char a:3;
- char b:4;
- char c:5;
- char d:4;
- };
- struct S s = {0};
- s.a = 10;
- s.b = 12;
- s.c = 3;
- s.d = 4;
内存解析:
1. int 位段被当成有符号数还是无符号数是不确定的。2. 位段中最大位的数目不能确定。( 16 位机器最大 16 , 32 位机器最大 32 ,写成 27 ,在 16 位机器会出问题。3. 位段中的成员在内存中从左向右分配,还是从右向左分配标准尚未定义。4. 当一个结构包含两个位段,第二个位段成员比较大,无法容纳于第一个位段剩余的位时,是舍弃剩余的位还是利用,这是不确定的
总结 :
跟结构相比,位段可以达到同样的效果,但是可以很好的节省空间,但是有跨平台的问题存在。
在网络协议中应用较多:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。