为什么这个按位运算符导致错误?

use*_*360 -1 c bitwise-operators

int u = 21;
int v = 10;

if (u && v) printf(“ Time to move on!! ”);
if (u & v) printf(“Do it today!! \n”);
Run Code Online (Sandbox Code Playgroud)

这只打印"继续前进的时间!!" 这是有道理的,因为u和v在第一个if语句中都是正确的但是对于"if(u&v)"我不确定它是如何确定这是真还是假.我明白了它是21和10的两个二进制表示但是接着是什么?谢谢!

wol*_*k88 7

21是二进制的10101,而10是二进制的01010.按位&返回00000,或者0false.

  • 它会导致2('00010`在`2的位置有'1`).任何非零都会导致"真". (2认同)