2017-12-01 5 views
4

Dies ist ein C++ Programm, das ich schrieb:falsch || wahr gibt 0 in MinGW Compiler v 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; 
} 

und dies ist der Ausgang.

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

Könnte mir jemand erklären, warum false || true0 schenkt? Ich benutze MinGW C++ Compiler Version 6.3.0-1.

+1

Den Ausdruck in Klammern einschließen. – 0x499602D2

+0

@ 0x499602D2: Oh okay. Vielen Dank. – darkavenger

Antwort

8

Nach C++ Operator Precedence hat operator<< höhere Priorität als operator || (und operator &&), so wird cout << false || true; als ob (cout << false) || true; interpretiert werden; Sie erhalten immer false ausgedruckt werden.

Um das Problem zu lösen, sollten Sie Klammern hinzufügen, um den Vorrang explizit anzugeben, z. cout << (false || true);.

+0

Ahh okay. Ich habs. Vielen Dank @songyuanyao. – darkavenger

Verwandte Themen