if(x& y)条件如何在c ++

时间:2018-01-31 07:46:12

标签: c++

在c ++中,if(x & 5)if(x <= 5)之间有什么区别? 我放了x=4,在两种情况下输出都相同。

2 个答案:

答案 0 :(得分:14)

使用x & 5您正在进行按位和操作(它不是逻辑和)。时间:

4 = 0b0100 AND
5 = 0b0101 =
---------------
4 = 0b0100 != 0

条件的结果是true。那个4小于或等于5(4 <= 5)又是true但是你没有测试相同的条件,你只是比较两个都返回true的操作。两者都是偶然的,都是真的。

不用担心:许多刚刚开始编程的人犯了这个错误。请查看bitwise operationslogical connectives之间的差异。

答案 1 :(得分:1)

整数上的&运算符是一点一滴的。

400000000 00000000 00000000 00000100

500000000 00000000 00000000 00000101

4 & 500000000 00000000 00000000 00000100and操作)

所以4 & 5 = 4

如果将整数转换为布尔值,则0以外的所有数字都将计算为true