2015-04-20 106 views
-1
int u = 21; 
int v = 10; 

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

这只打印“时间继续!!”这是有道理的,因为u和v在第一个if语句中都是真实的,但对于“if(u & v)”我不确定它是如何确定这是真还是假。我知道它是21和10的两个二进制表示,但那又如何?谢谢!为什么这个按位运算符会导致错误?

回答

7

21二进制是,而二进制中的10是01010。按位&返回000000,即false

+0

好吧,并说如果它是23所以10111和10所以01010这将给00010,这会导致1如此真实? – user3373360

+2

这会导致2('00010'在'2'位置有'1')。任何非零都会导致“真”。 – wolfPack88

+0

哦,好的,是的,这是有道理哈哈谢谢 – user3373360

相关问题