Logische Operatoren: oder
Der zweite logische Operator ist || (zwei senkrechte Striche hintereinander), der „oder“ bedeutet. Nehmen wir an, die Wochentage sind von 1 (Montag) bis 7 (Sonntag) nummeriert. „Wenn es Tag 6 oder Tag 7 ist, ist Wochenende“:
int tag = 7;
if (tag == 6 || tag == 7) {
printf("Es ist Wochenende\n");
}Das gibt Folgendes 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 == 6 || 7. Der rechte Teil ist dann nur die Zahl 7, kein Vergleich. Und wie du aus der Übung über wahr und falsch weißt, gilt jede Zahl außer 0 als wahr. Die ganze Bedingung ist also immer wahr, sogar an einem Montag, und der Compiler meldet keinen Fehler. Jeder Teil braucht seinen eigenen Vergleich: tag == 6 || tag == 7.
Du kannst && und || in einer Bedingung verwenden. So wie die Multiplikation vor der Addition geht, geht && vor ||. Fasse mit Klammern zusammen, was zusammengehört, genau wie in der Mathematik:
int tag = 6;
int temperatur = 15;
if ((tag == 6 || tag == 7) && temperatur > 20) {
printf("Wir machen einen Ausflug\n");
} else {
printf("Wir bleiben zu Hause\n");
}Das gibt Folgendes 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 == 7 && temperatur > 20 verbinden, und die Bedingung wäre jeden 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 gibt Studenten und Personen ab 65 Jahren einen Rabatt. Schreibe anstelle des Kommentars eine
if-Anweisung, dieRabattausgibt, wennist_studentwahr ist oderaltermindestens65ist. Verwende||. - 2
Neue Regel: Rabatt gibt es nur mittwochs, also wenn
taggleich3ist. Füge am Ende der Bedingung&& tag == 3hinzu, setze den Teil mit||in Klammern und füge einenelse-Zweig hinzu, derVoller Preisausgibt. Heute ist Montag (tagist1), also gibt das ProgrammVoller Preisaus.