“?1:0”是什么意思

what does "? 1 : 0" mean

我不明白第三行试图完成什么。我刚刚学习了按位运算符。如果有人可以引导我完成最后两行,那就太好了。我了解移位运算符,但 i.t.o 移位运算符我不完全确定它的含义。

    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.谢谢你的时间

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

可以这样想:

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

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

expression ? if_true_then_process_it : or_process_it