我经常见到一些这样的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”是何语法,如何理解???谢谢!!

解决方案 »

  1.   

    :1
    表示该变量实际使用的存储间为1个bit。(单位为bit)
    即它能存储值域为0..1
      

  2.   

    :1是位域,指在内存中这个变量只占一位BIT,位域的使用过程中,C分配足够的内存来存放结构的位,如果结构中没有使用最后的位,那么一般是把位初始化为0。说明位域时,结构没个成员必须是无符号整型
      

  3.   

    位域?也就是说不管其声明的变量占用几个字节,而实际使用的仅是一bit???同BOOL有什么区别??那么这么作有什么意义呢???
      

  4.   

    to:dz_w(快乐之星) 
      C分配内存时是按照bit还是unsigned int来分配内存的???
      

  5.   

    Bit Field:In addition to declarators for members of a structure or union, a structure declarator can also be a specified number of bits, called a "bit field." Its length is set off from the declarator for the field name by a colon. A bit field is interpreted as an integral type.
      

  6.   

    :1是位域
    比如
    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  
    };
      

  7.   

    那么对其操作是按照位操作进行的,不能够按照整型变量进行操作,是吗?
    如果:
    unsigned x4:4;  //成员变量 x4占4位,即范围  000-- 1111 (0--15)我要对其某位置位,如第三位,该如何进行? x4 = 8;行吗???
      

  8.   

    算了,还是看MSDN吧。谢谢各位,现在散分!!!!!