x&&1其实是先判断x,若x非0,在判断1,1非0,所以x&&1判断结果为真,若x为0,则&&后面无需判断,x&&1判断结果为假。所以等效于x!=0;
个人认为在if语句中直接判断if(x)机会足够了.
因为
a
&&
b要求a和b都为真才为真,而上面1是永真的,所以
x若是真
则
x
&&1
为真
x若是假
则
x
&&
1为假
所以
x与
x
&&
1等价了.
&&1的结果就是自己,也就是x
你这个表达式应该是c/c++的吧,在c里,只有0代表false,其他情况都代表true(比如x=100,那么if(x)也会返回true)
来个真值表吧
X&&1
:
当X=1时,X&&1(1和1相与)为True;
当X=0时,X&&1(1和0相与)为假.
X!=0:
当X=1是,X!=0成立(1≠0成立)
为True
当X=0时,X!=0不成立(0≠0不成立)为False
真值表一样,二者等价