2017-12-01 20 views
4

이 내가 쓴 C++ 프로그램입니다 V는 MinGW 컴파일러에 0을 제공 :false || 사실 6.3.0-1

#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 || true0을주는 이유

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

은 누군가가 나에게 설명해 주시겠습니까? MinGW C++ 컴파일러 버전 6.3.0-1을 사용하고 있습니다. C++ Operator Precedence 따르면

+1

괄호 안에 표현식을 래핑하십시오. – 0x499602D2

+0

@ 0x499602D2 : 오케이. 고맙습니다. – darkavenger

답변

8

, operator<<operator || (및 operator &&)이므로 cout << false || true;(cout << false) || true; 것처럼 해석 될보다 높은 우선 순위를 갖고; 당신은 항상 false을 출력 할 것입니다.

문제를 해결하려면 괄호를 추가하여 우선 순위를 명시 적으로 지정해야합니다 (예 : cout << (false || true);.

+0

아, 그래. 알았다. 고마워요 @songyuanyao. – darkavenger