C 为什么这个按位运算符会导致false?

C 为什么这个按位运算符会导致false?,c,bitwise-operators,C,Bitwise Operators,这只打印“时间继续!!”,这很有意义,因为在第一个if语句中u和v都是真的,但对于“if(u&v)”,我不确定它是如何确定这是真是假的。我明白了-,是21和10的两个二进制表示,但是接下来呢?谢谢 21在二进制中是10101,而10在二进制中是01010。按位&返回00000,或0,这是false好的,如果是23 so 10111和10 so 01010,这会导致1 so true吗?它会导致2(00010在2的位置有1)。任何非零的结果均为true。 int u = 21; int v = 1

这只打印“时间继续!!”,这很有意义,因为在第一个if语句中u和v都是真的,但对于“if(u&v)”,我不确定它是如何确定这是真是假的。我明白了-,是21和10的两个二进制表示,但是接下来呢?谢谢

21在二进制中是
10101
,而10在二进制中是
01010
。按位
&
返回
00000
,或
0
,这是
false

好的,如果是23 so 10111和10 so 01010,这会导致1 so true吗?它会导致2(
00010
2
的位置有
1
)。任何非零的结果均为
true
int u = 21;
int v = 10;

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