“?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
我不明白第三行试图完成什么。我刚刚学习了按位运算符。如果有人可以引导我完成最后两行,那就太好了。我了解移位运算符,但 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