MinGW编译器版本6.3.0-1中,false || true 返回0。

4

这是我写的一个C++程序:

#include <iostream>
using namespace std;

int main() {

    cout << "\n" << "false || false" << ": " << false || false;
    cout << "\n" << "false || true" <<  ": " << false || true;
    cout << "\n" << "true || false" << ": " <<  true || false;
    cout << "\n" << "true || true" << ": " <<  true || true;
    cout << "\n" << "false && false" << ": " << false && false;
    cout << "\n" << "false && true" << ": " << false && true;
    cout << "\n" << "true && false" << ": " << true && false;
    cout << "\n" << "true && true" << ": " << true && true;

    return 0;
}

这是输出结果。

false || false: 0
false || true: 0
true || false: 1
true || true: 1
false && false: 0
false && true: 0
true && false: 1
true && true: 1

有人能解释一下为什么false || true会得到0吗?我正在使用MinGW C++编译器版本6.3.0-1。

1
将表达式用括号括起来。 - David G
@0x499602D2:哦,好的。谢谢。 - darkavenger
1个回答

8
根据 C++ 运算符优先级operator<< 优先级高于 operator ||(和 operator &&),因此 cout << false || true; 将被解释为 (cout << false) || true;; 你始终会得到输出 false
要解决这个问题,你应该添加括号以明确指定优先级,例如:cout << (false || true);

好的,明白了。非常感谢@songyuanyao。 - darkavenger

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接