我经常见到一些这样的C/C++的语法,如:
typedef struct DataRate {
struct {
unsigned Standard : 1;
unsigned channel : 1;
} m;
.......
} DataRate;或class XXX
{
protected:
unsigned int bVirtual : 1;
unsigned int bGeneral : 1;
unsigned int bTrunk : 1;
....
}请问,其中的 “ :1”是何语法,如何理解???谢谢!!
typedef struct DataRate {
struct {
unsigned Standard : 1;
unsigned channel : 1;
} m;
.......
} DataRate;或class XXX
{
protected:
unsigned int bVirtual : 1;
unsigned int bGeneral : 1;
unsigned int bTrunk : 1;
....
}请问,其中的 “ :1”是何语法,如何理解???谢谢!!
表示该变量实际使用的存储间为1个bit。(单位为bit)
即它能存储值域为0..1
C分配内存时是按照bit还是unsigned int来分配内存的???
比如
struct X
{
unsigned x1:1; //成员变量 x1占1位,即范围 0-- 1
unsigned x2:2; //成员变量 x2占2位,即范围 00-- 11 (0--3)
unsigned x3:3; //成员变量 x3占3位,即范围 000-- 111 (0--7)
unsigned x4:4; //成员变量 x4占4位,即范围 000-- 1111 (0--15)
unsigned x5:5; //成员变量 x5占5位,即范围00000--11111 (0--31)
unsigned x6:1; //成员变量 x1占3位,即范围 0--- 1
};
如果:
unsigned x4:4; //成员变量 x4占4位,即范围 000-- 1111 (0--15)我要对其某位置位,如第三位,该如何进行? x4 = 8;行吗???