在c ++中,if(x & 5)
和if(x <= 5)
之间有什么区别?
我放了x=4
,在两种情况下输出都相同。
答案 0 :(得分:14)
使用x & 5
您正在进行按位和操作(它不是逻辑和)。时间:
4 = 0b0100 AND
5 = 0b0101 =
---------------
4 = 0b0100 != 0
条件的结果是true
。那个4小于或等于5(4 <= 5
)又是true
。
但是你没有测试相同的条件,你只是比较两个都返回true
的操作。两者都是偶然的,都是真的。
答案 1 :(得分:1)
整数上的&
运算符是一点一滴的。
4
是00000000 00000000 00000000 00000100
5
是00000000 00000000 00000000 00000101
4 & 5
是00000000 00000000 00000000 00000100
(and
操作)
所以4 & 5 = 4
。
如果将整数转换为布尔值,则0
以外的所有数字都将计算为true
。