为什么这个按位运算符结果为假?

Why is this bitwise operator resulting false?

int u = 21;
int v = 10;

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

这只打印 "Time to move on!!" 这是有道理的,因为在第一个 if 语句中 u 和 v 都为真,但是对于 "if (u & v)" 我不确定它是如何确定它是真还是假的。我明白了,它是 21 和 10 的两个二进制表示,但是然后呢?谢谢!

二进制中的 21 是 10101,而二进制中的 10 是 01010。按位 & returns 000000,即 false.