假|| 在MinGW Compiler v 6.3.0-1中为true给出0

dar*_*ger 4 c++ boolean mingw operator-precedence mingw32

这是我写的一个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;
}
Run Code Online (Sandbox Code Playgroud)

这是输出.

false || false: 0
false || true: 0
true || false: 1
true || true: 1
false && false: 0
false && true: 0
true && false: 1
true && true: 1
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释为什么false || true要给予0?我正在使用MinGW C++编译器版本6.3.0-1.

son*_*yao 8

根据C++ Operator Precedence,operator<<优先级高于operator ||(和operator &&),因此cout << false || true;将被解释为(cout << false) || true;; 你将永远false打印出来.

要解决此问题,您应该添加括号以明确指定优先级,例如cout << (false || true);.