原文出处:https://www.cnblogs.com/roger0212/p/4436723.html
unsigned m_VAlignType: 2; //uint型,占2bit;
unsigned :1; //uint型,占1bit
unsigned char m_StringType : 8; //uchar型,占8bit;
: 是C 中的一种语法, 称为 位段或者是 位域
分配变量的所占的bit数; int一般为32bit,但如果int a :1 表示此处的a只占1bit;
冒号是位域!根据你实际需要的空间来分配,可以节省空间!
所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。形式:
struct 位域结构名
{ 类型说明符 位域名:位域长度 };//本质是结构体遵循结构体使用方法
位域使用要点:
1. 一个位域必须存储在同一个字节中,不能跨两个字节。如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域。也可以有意使某位域从下一单元开始。由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位。
struct bs
{
unsigned a:4
unsigned :0 /*空域*/
unsigned b:4 /*从下一单元开始存放*/
unsigned c:4
}//在这个位域定义中,变量a占第一字节的4位,后4位填0表示不使用,变量b从第二字节开始,占用4位,c占用4位。
2.位域的使用
位域的使用和结构成员的使用相同,其一般形式为: 位域变量名·位域名 位域允许用各种格式输出。