Logische Operatoren: oder
Der zweite logische Operator ist || (zwei senkrechte Striche hintereinander), der „oder“ bedeutet. „Wenn Samstag oder Sonntag ist, ist Wochenende“:
std::string tag = "Sonntag";
if (tag == "Samstag" || tag == "Sonntag") {
std::cout << "Es ist Wochenende" << std::endl;
}Das gibt aus:
Es ist WochenendeEine mit || verbundene Bedingung ist wahr, wenn mindestens einer ihrer Teile wahr ist. Sie ist nur falsch, wenn alle falsch sind:
true || trueisttruetrue || falseisttruefalse || trueisttruefalse || falseistfalse
Ein häufiger Fehler ist, die Bedingung so abzukürzen, wie wir sprechen: tag == "Samstag" || "Sonntag". Der rechte Teil ist dann nur der Text "Sonntag", kein Vergleich. Text in Anführungszeichen gilt in einer Bedingung als wahr, die ganze Bedingung ist also immer wahr, auch an einem Montag. Und das Programm lässt sich ohne Fehler oder auch nur eine Warnung kompilieren. Jeder Teil braucht seinen eigenen Vergleich: tag == "Samstag" || tag == "Sonntag".
In einer Bedingung kannst du && und || zusammen verwenden. So wie die Multiplikation vor der Addition kommt, kommt && vor ||. Fasse mit Klammern zusammen, was zusammengehört, genau wie in der Mathematik:
std::string tag = "Samstag";
int temperatur = 15;
if ((tag == "Samstag" || tag == "Sonntag") && temperatur > 20) {
std::cout << "Wir machen einen Ausflug" << std::endl;
} else {
std::cout << "Wir bleiben zu Hause" << std::endl;
}Das gibt aus:
Wir bleiben zu HauseDer Teil in Klammern wird zuerst ausgewertet: Es ist Samstag, also ist er wahr. Aber temperatur > 20 ist falsch, und true && false ist falsch. Ohne die inneren Klammern würde das Programm zuerst tag == "Sonntag" && temperatur > 20 verbinden, und die Bedingung wäre an jedem Samstag wahr, egal bei welchem Wetter. Die äußeren Klammern gehören zur if-Anweisung, deshalb stehen am Anfang der Bedingung zwei.
So schreibst du es:
Anweisungen
- 1
Ein Kino gewährt Studenten und Menschen ab 65 Jahren eine Ermäßigung. Schreibe eine
if-Anweisung, dieErmäßigungausgibt, wennistStudentwahr ist oderaltermindestens65beträgt. Verwende||. - 2
Neue Regel: Ermäßigung gibt es nur mittwochs. Füge am Ende der Bedingung
&& tag == "Mittwoch"hinzu, setze den Teil mit||in Klammern und füge einenelse-Zweig hinzu, derVoller Preisausgibt. Heute ist Montag, das Programm gibt alsoVoller Preisaus.