Logische Operatoren: nicht
Der dritte logische Operator, ! (ein Ausrufezeichen), heißt Negation. Er macht aus einem Wahrheitswert den entgegengesetzten: !true ist false und !false ist true. Lies ihn als „nicht“:
bool esRegnet = false;
if (!esRegnet) {
std::cout << "Ich brauche keinen Regenschirm" << std::endl;
}Das gibt aus:
Ich brauche keinen RegenschirmesRegnet ist false, also ist !esRegnet true, und der Block wird ausgeführt. Lies die Bedingung als „wenn es nicht regnet“. Du könntest auch esRegnet == false schreiben. Das bedeutet dasselbe, aber ! ist kürzer.
Die Negation ist am nützlichsten bei booleschen Variablen und wenn du Bedingungen verbindest. „Der Laden ist geöffnet und es ist kein Feiertag“ ist istOffen && !istFeiertag. Bei Vergleichen brauchst du sie meist nicht: Statt „das Alter ist nicht mindestens 18“ schreibst du einfach den umgekehrten Vergleich, alter < 18.
! gilt nur für das, was direkt danach kommt. Um einen ganzen Vergleich oder eine verbundene Bedingung zu negieren, setze sie in Klammern: !(punkte >= 50) oder !(hatFuehrerschein && hatAuto). Ohne Klammern tut das Programm etwas anderes:
int punkte = 30;
if (!punkte >= 50) {
std::cout << "Durchgefallen" << std::endl;
}
std::cout << "Fertig" << std::endl;Das gibt aus:
FertigDer Schüler hat nur 30 Punkte, und trotzdem gibt das Programm nicht Durchgefallen aus. Hier gilt ! nur für punkte: !punkte ist false, weil 30 nicht 0 ist, und false >= 50 (also 0 >= 50) ist falsch. Das Programm lässt sich ohne Fehler kompilieren, der Compiler gibt dazu nur eine Warnung aus, die du hier nicht siehst. Richtig ist !(punkte >= 50) oder, noch einfacher, punkte < 50.
So schreibst du es:
Anweisungen
- 1
Schreibe eine
if-Anweisung, dieIch gehe nach draußenausgibt, wenn das Internet nicht funktioniert. Verwende!. - 2
Nach draußen zu gehen lohnt sich nur, wenn es nicht regnet. Erweitere die Bedingung mit
&&so, dass sie nur wahr ist, wenn das Internet nicht funktioniert und es gleichzeitig nicht regnet (!esRegnet). Füge dann einenelse-Zweig hinzu, derIch lese ein Buchausgibt.