Vergleichsoperatoren und logische Operatoren in C++
Was ist das und wozu dient es?
Stell dir vor, du spielst ein Computerspiel. Du hast 100 Leben. Wenn du einem Monster begegnest, überprüft das Spiel: "Leben größer als 0?". Wenn ja – kannst du kämpfen. Wenn nein – sagt das Spiel: "Game Over".
In der Programmierung führen solche Überprüfungen Vergleichsoperatoren und logische Operatoren durch. Sie helfen dem Programm, Entscheidungen zu treffen. Zum Beispiel:
- Prüfen, ob genug Geld auf dem Konto ist
- Herausfinden, ob es Abend geworden ist
- Verstehen, ob der Spieler eine Tür öffnen kann (hat er den Schlüssel ODER kennt er den Code)
Ohne sie wäre das Programm wie ein Roboter, der immer dasselbe tut, ohne auf das zu achten, was um ihn herum passiert. Mit ihnen wird es intelligent!
Syntax und Codebeispiele
In C++ sehen die Vergleichsoperatoren so aus:
== // gleich (Achtung: zwei Gleichheitszeichen!)
!= // ungleich
> // größer
< // kleiner
>= // größer oder gleich
<= // kleiner oder gleich
Und logische Operatoren verbinden mehrere Bedingungen:
&& // UND (beide Bedingungen müssen true sein)
|| // ODER (mindestens eine Bedingung ist true)
! // NICHT (ändert true zu false und umgekehrt)
Beispiel 1: Altersüberprüfung
#include <iostream>
using namespace std;
int main() {
int age = 14;
// Prüfen: Alter größer oder gleich 18?
if (age >= 18) {
cout << "Du bist erwachsen!" << endl;
} else {
cout << "Du bist noch ein Kind." << endl;
}
// Ausgabe: "Du bist noch ein Kind."
// Weil 14 nicht größer oder gleich 18 ist
return 0;
}
Beispiel 2: Logisches UND (&&)
#include <iostream>
using namespace std;
int main() {
bool hat_schluessel = true;
bool kennt_code = false;
// Um die Tür zu öffnen, braucht man sowohl Schlüssel als auch Code
if (hat_schluessel && kennt_code) {
cout << "Tür geöffnet!" << endl;
} else {
cout << "Zugriff verweigert." << endl;
}
// Ausgabe: "Zugriff verweigert."
// Weil kennt_code = false
return 0;
}
Beispiel 3: Logisches ODER (||)
#include <iostream>
using namespace std;
int main() {
int temperatur = 30; // Grad
// Wir gehen spazieren, wenn es warm ODER trocken ist
if (temperatur > 20 || temperatur < 10) {
cout << "Lass uns spazieren gehen!" << endl;
} else {
cout << "Wir bleiben zu Hause." << endl;
}
// Ausgabe: "Lass uns spazieren gehen!"
// Weil 30 > 20 (erste Bedingung ist true)
return 0;
}
Beispiel 4: Logisches NICHT (!)
#include <iostream>
using namespace std;
int main() {
bool regnet = false;
// Wenn es NICHT regnet, gehen wir spazieren
if (!regnet) {
cout << "Hurra, spazieren gehen!" << endl;
} else {
cout << "Regenschirm mitnehmen." << endl;
}
// Ausgabe: "Hurra, spazieren gehen!"
// Weil !false = true
return 0;
}
Beispiel 5: Komplexe Bedingung
#include <iostream>
using namespace std;
int main() {
int alter = 16;
bool hat_fuehrerschein = false;
bool mit_eltern = true;
// Man darf Auto fahren, wenn:
// (Alter >= 18 UND hat Führerschein) ODER (mit Eltern)
if ((alter >= 18 && hat_fuehrerschein) || mit_eltern) {
cout << "Du darfst ans Steuer!" << endl;
} else {
cout << "Du darfst nicht fahren." << endl;
}
// Ausgabe: "Du darfst ans Steuer!"
// Weil mit_eltern = true
return 0;
}
Vergleich mit Python
In Python sehen dieselben Operatoren fast genauso aus, aber es gibt wichtige Unterschiede:
| Operation | C++ | Python |
|---|---|---|
| Gleich | == |
== |
| Ungleich | != |
!= |
| Größer | > |
> |
| UND | && |
and |
| ODER | || |
or |
| NICHT | ! |
not |
Beispiel in Python:
age = 14
if age >= 18:
print("Du bist erwachsen!")
else:
print("Du bist noch ein Kind.")
# Ausgabe: "Du bist noch ein Kind."
Der Hauptunterschied: In Python werden logische Operatoren als Wörter geschrieben (and, or, not), in C++ als Symbole (&&, ||, !). Außerdem braucht man in Python keine Semikolons und geschweiften Klammern – stattdessen werden Einrückungen verwendet.
Typische Anfängerfehler
Fehler 1: Verwechslung von = und ==
Ein Gleichheitszeichen (=) ist eine Zuweisung. Zwei (==) sind ein Vergleich.
// FALSCH:
if (x = 5) { ... } // Fehler! Weist 5 der Variable x zu
// RICHTIG:
if (x == 5) { ... } // Prüft, ob x gleich 5 ist
Fehler 2: Vergessen der Operatorpriorität
Wie in der Mathematik: zuerst Multiplikation, dann Addition. In der Logik gibt es auch eine Reihenfolge: zuerst !, dann &&, dann ||.
// Kann unklar sein:
if (a || b && c) // Zuerst wird b && c ausgeführt, dann a || Ergebnis
// Besser mit Klammern:
if (a || (b && c)) // Jetzt ist es klar
Fehler 3: Vergleich verschiedener Typen
int x = 5;
double y = 5.0;
if (x == y) { ... } // Funktioniert, kann aber unerwartet sein
// Besser in einen Typ umwandeln:
if (x == (int)y) { ... }
Fehler 4: Verwendung von =