Vergleichsoperatoren
Die Zeichen < und >, die du in Bedingungen benutzt hast, sind Vergleichsoperatoren: Sie vergleichen zwei Werte, und das Ergebnis ist wahr oder falsch. C++ hat sechs davon:
==gleich:5 == 5!=ungleich:5 != 3>größer als:5 > 3<kleiner als:3 < 5>=größer oder gleich:5 >= 5<=kleiner oder gleich:3 <= 5
Alle Beispiele in der Liste sind wahr. Bei !=, >= und <= steht das Gleichheitszeichen immer an zweiter Stelle, ohne Leerzeichen dazwischen. Achte an der Grenze auf den Unterschied zwischen > und >=: 18 > 18 ist falsch, aber 18 >= 18 ist wahr. „18 oder älter“ ist also alter >= 18.
„Gleich“ schreibt man mit zwei Gleichheitszeichen, ==, weil ein einzelnes schon eine Aufgabe hat: punkte = 10 weist zu, das heißt, es speichert 10 in der Variablen punkte. punkte == 10 vergleicht: Es fragt, ob punkte den Wert 10 enthält, und ändert nichts.
= statt == in einer Bedingung zu schreiben ist einer der häufigsten Fehler. In C++ ist er besonders heimtückisch, weil das Programm sich kompilieren lässt und läuft:
int punkte = 7;
if (punkte = 10) {
std::cout << "Volle Punktzahl!" << std::endl;
}
std::cout << "Punkte: " << punkte << std::endl;Das gibt aus:
Volle Punktzahl!
Punkte: 10punkte = 10 in der Bedingung vergleicht nichts. Es speichert 10 in punkte, und dieser Wert wird dann als Bedingung benutzt. C++ behandelt jede Zahl außer 0 als wahr, die Bedingung ist also immer wahr, was auch immer punkte vorher enthielt, und die ursprünglichen 7 Punkte sind ebenfalls weg. Der Compiler gibt dazu nur eine Warnung aus, die du in diesem Editor nicht siehst. Führt ein Programm einen Block aus, den es nicht ausführen sollte, prüfe zuerst, ob in der Bedingung = statt == steht.
Du kannst Text genauso vergleichen wie Zahlen:
std::string passwort = "katze42";
if (passwort == "katze42") {
std::cout << "Willkommen zurück" << std::endl;
} else {
std::cout << "Falsches Passwort" << std::endl;
}Das gibt aus:
Willkommen zurückWie in jedem Programm mit std::string darfst du #include <string> am Anfang nicht vergessen. Zwei Texte sind nur gleich, wenn sie genau übereinstimmen, Zeichen für Zeichen. Groß- und Kleinbuchstaben sind verschiedene Zeichen: Enthält die Variable name den Text "Anna", ist name == "anna" falsch. Auch "katze42 " mit einem Leerzeichen am Ende ist ein anderer Text. Vergiss die Anführungszeichen um den Text nicht, mit dem du vergleichst. Ohne sie sucht der Compiler bei passwort == katze42 nach einer Variablen namens katze42 und meldet error: use of undeclared identifier 'katze42'.
So schreibst du es:
Anweisungen
- 1
Ein Onlineshop macht seinem 100. Kunden ein Geschenk. Führe das Programm aus: Es gibt den Glückwunsch und
Kundennummer 100aus, obwohl das hier der Kunde Nummer 57 ist. Korrigiere die Bedingung so, dass sie vergleicht. Dann gibt das Programm nurKundennummer 57aus. - 2
Der Shop liefert nach Deutschland am nächsten Tag und überallhin sonst innerhalb von 3 Tagen. Schreibe am Ende des Programms eine
if-Anweisung mit einemelse-Zweig: Istlandgleich"Deutschland", gibLieferung morgenaus, sonstLieferung in 3 Tagen. Das Programm gibt aus:Kundennummer 57 Lieferung in 3 Tagen