if (a==0&&b==0)与if(a==b==0)的区别
它们看起来只差一个括号,但含义完全不同!
✅ 正确写法:if (a == 0 && b == 0)
- 检查 a 和 b 同时为 0。
- 逻辑清晰,不会出错。
❌ 错误写法:if (a == b == 0)
- C++ 语法上合法,但逻辑错误。
- 执行顺序是:
a == b→ 结果是 bool 值:true(1)或false(0)。bool == 0→ 再比较这个 bool 值是否等于 0。
🔍 举个例子:
| 情况 | a | b | a==b | ab0 结果 | 说明 |
|---|---|---|---|---|---|
| a=0, b=0 | 0 | 0 | true (1) | 1 == 0 → false | ❌ 本应为 true,但变成 false |
| a=1, b=1 | 1 | 1 | true (1) | 1 == 0 → false | ✅ 巧合正确 |
| a=2, b=0 | 2 | 0 | false (0) | 0 == 0 → true | ❌ 本应为 false,但变成 true |
🚩 结论
- 不要用
a == b == 0,它不是你想要的“a 和 b 同时为 0”。 - 始终使用
a == 0 && b == 0,逻辑正确,易读安全。

浙公网安备 33010602011771号