【问题标题】:Is ":" operator equivalent to an assignment operator "= "? [duplicate]“:”运算符是否等同于赋值运算符“=”? [复制]
【发布时间】:2017-09-21 20:30:51
【问题描述】:

我是 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 operator-keyword


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 括号中的值是签名数据类型的吗?在这种情况下,(or -1,0) 缺少 1 位。
    • @mch 敏锐的眼光。
    • 嗯 - 我猜他们会禁止 1 位签名)
    猜你喜欢
    • 2013-10-26
    • 1970-01-01
    • 2017-11-21
    • 2011-11-16
    • 1970-01-01
    • 2021-04-16
    • 2015-04-09
    • 1970-01-01
    • 2021-08-28
    相关资源
    最近更新 更多