为何C++中逻辑或(||)运算符无法正确计算?
问题原因与解决方案
这是运算符优先级导致的问题。C++中<<的优先级高于||,所以你的代码会被编译器解析为:
(std::cout << false) || true;
执行流程是:先执行std::cout << false,输出0,这个表达式返回std::cout对象(非空,被当作布尔值true),接着和true做逻辑或运算,最终结果是true但并没有被输出——这就是你觉得||没生效的原因。
修复方法很简单,给逻辑或表达式加上括号,强制让它先计算:
#include <iostream> int main() { std::cout << (false || true); return 0; }
此时会先算出false || true的结果true,再输出到终端,你会看到打印出1(布尔值true对应的整数表示)。
内容的提问来源于stack exchange,提问作者Hans
相关产品推荐
相关产品推荐

