“:”运算符是否等同于赋值运算符“=”?

Is ":" operator equivalent to an assignment operator "= "?

我是 C 编码的新手,我 运行 进入以下结构中的“:”

struct __tag131
{                                                          /* Bit Access       */
unsigned char  P0P6:1;                                 /* P0P6             */
unsigned char  P1P6:1;                                 /* P1P6             */
unsigned char  P2P6:1;                                 /* P2P6             */
unsigned char  P3P6:1;                                 /* P3P6             */
unsigned char  :2;                                     /* Reserved Bits    */
unsigned char  TBP6:1;                                 /* TBP6             */
unsigned char  MKP6:1;                                 /* MKP6             */
unsigned char  :4;                                     /* Reserved Bits    */
unsigned char  RFP6:1;                                 /* RFP6             */
unsigned char  :2;                                     /* Reserved Bits    */
unsigned char  CTP6:1;                                 /* CTP6             */
}; 

“:”有什么用?它甚至是运营商吗?我知道 unsigned char 'type' 是什么,但 unsigned char :2 是什么?请解释。

不,“:”是位域。您可以在以下位置了解更多信息:

C 中的位字段允许压缩形式的信息。冒号后面的数字描述了允许存储的位数。

1 bit => 0,1   (or -1,0 )
2 bits => 0,3  (or -2,1 )
3 bits => 0,7  (or -4,3 )

数据访问速度较慢,但​​使用较少space。