Wahrheitswerte
Jeder Vergleich hat eine Antwort: ja oder nein. In C++ sind diese Antworten die Werte true und false. Sie heißen Wahrheitswerte oder Boolesche Werte, nach dem Mathematiker George Boole, und ihren Datentyp kennst du schon aus der Lektion über Variablen: bool. Du kannst das Ergebnis eines Vergleichs also in einer Variablen speichern, ausgeben und als Bedingung benutzen:
int alter = 20;
bool istErwachsen = alter >= 18;
std::cout << "Erwachsen: " << istErwachsen << std::endl;
if (istErwachsen) {
std::cout << "Du darfst wählen" << std::endl;
}Das gibt aus:
Erwachsen: 1
Du darfst wählenLies die zweite Codezeile von rechts: Das Programm vergleicht zuerst alter >= 18, was true ergibt, und dann speichert = diesen Wert in istErwachsen. Wie du schon weißt, gibt std::cout true als 1 und false als 0 aus. Die Bedingung if (istErwachsen) bedeutet dasselbe wie if (istErwachsen == true). Sie ist nur kürzer, und deshalb schreiben Programmierer sie so.
Die Namen boolescher Variablen beginnen meist mit ist oder hat (istErwachsen, hatTicket), damit sie sich wie eine Ja-Nein-Frage lesen.
Eine boolesche Variable ist zum Beispiel bei geraden Zahlen praktisch. Eine Zahl ist gerade, wenn nach der Division durch zwei nichts übrig bleibt, also wenn der Rest zahl % 2 gleich 0 ist:
int zahl = 14;
bool istGerade = zahl % 2 == 0;
std::cout << "Gerade: " << istGerade << std::endl;Das gibt aus:
Gerade: 1Das Programm berechnet zuerst den Rest 14 % 2, der 0 ist, und vergleicht ihn erst dann mit null: % kommt vor ==, so wie die Multiplikation vor der Addition kommt. Bei einer ungeraden Zahl, sagen wir 7, ist der Rest 1 und istGerade ist false. Würdest du hier aus Versehen ein einzelnes Gleichheitszeichen schreiben, zahl % 2 = 0, würde der Compiler error: expression is not assignable melden, weil du im Ergebnis einer Rechnung nichts speichern kannst. Hier erkennt der Compiler die Verwechslung von = und ==, anders als bei if (punkte = 10) in der vorigen Übung.
So schreibst du es:
Anweisungen
- 1
Erstelle eine
bool-VariableistGerade, die das Ergebnis des Vergleichszahl % 2 == 0enthält, und gib sie aus:std::cout << "Gerade: " << istGerade << std::endl;. Die Zahl 7 ist nicht gerade, das Programm gibt alsoGerade: 0aus. - 2
Schreibe unter diese Zeile eine
if-Anweisung mit der BedingungistGerade, dieDie Zahl ist geradeausgibt, und gib ihr einenelse-Zweig, derDie Zahl ist ungeradeausgibt. Das Programm gibt aus:Zahl: 7 Gerade: 0 Die Zahl ist ungerade