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

时间:2017-09-21 20:30:52

标签: c operator-keyword

我是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是什么?请解释一下。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

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

数据访问速度较慢,但​​占用的空间较少。