if(x & y) 条件在 c++ 中的工作原理

How if(x & y) condition works in c++

本文关键字:c++ 工作 条件 if      更新时间:2023-10-16

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

有了x & 5,您正在进行按位和操作(这不是逻辑(。因为:

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

条件的结果是 true .4等于5(4 <= 5(再次true但是您不是在测试相同的条件,您只是比较两个都返回 true 的操作。两者都返回为真只是偶然的。

别担心:这是许多刚开始编程的人都会犯的错误。请查看按位运算和逻辑连接词之间的区别。

整数

上的&运算符是逐位的。

4 00000000 00000000 00000000 00000100

5 00000000 00000000 00000000 00000101

4 & 5 00000000 00000000 00000000 00000100(and操作(

所以4 & 5 = 4.

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