【问题标题】:what does "? 1 : 0" mean [duplicate]“?1:0”是什么意思[重复]
【发布时间】:2015-05-27 02:39:03
【问题描述】:

我不明白第三行试图完成什么。我最近刚刚学习了按位运算符。如果有人能陪我走过最后两行,那就太好了。我了解移位运算符,但对于移位运算符,我并不完全确定它的含义。

    void create(uint8_t bInt[], int64_t num){
      for (int pos = 0; pos < 32; pos++){ 
        bInt[pos] = (num & mask) ? 1 : 0;
        mask = mask << 1;
         }
       }

对于这个赋值,我们使用 uint8_t 值的 32 元素数组来表示 32 位整数。例如,二进制整数 84193 是 0....0001 0100 1000 1110 0001。在 bInt[] 中,它会被存储为 1000 0111 0001 0010 1000 0000....0.感谢您的宝贵时间

【问题讨论】:

  • 称为条件运算符:en.wikipedia.org/wiki/%3F:
  • 三元运算符:if(这个条件)return 1 else return 0;
  • 您可以将(num &amp; mask) ? 1 : 0 替换为(num &amp; mask) != 0!!(num &amp; mask)

标签: c bitwise-operators


【解决方案1】:

?: 是一个ternary operator(num &amp; mask) ? 1 : 0;

这样想:

if( (num & mask) ) {
    bInt[pos] = 1
} else {
    bInt[pos] = 0
}

【讨论】:

    【解决方案2】:

    它是三元运算符,也用于其他一些语言,如 - java、c++。它是缩写if-then-else 的替代品。它的工作原理如下 -

    expression ? if_true_then_process_it : or_process_it  
    

    【讨论】:

    • 嗯.. 避免重复已经给出的答案。虽然正确,但自我在您回复前 5 分钟提供了准确答案。有时,这是不可避免的(例如,两个人同时回答),但如果可能的话,应该避免。
    猜你喜欢
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2017-06-30
    • 2017-02-23
    • 2019-04-25
    相关资源
    最近更新 更多