Logische Operationen verarbeiten ausschließlich Boolesche Werte (true /false). Sie dienen zur Prüfung, ob eine Bedingung erfüllt ist. Es gibt nur zwei mögliche Ergebnisse: true (wahr, Bedingung erfüllt), false (falsch, Bedingung nicht erfüllt).
Sämtliche if-Abfragen, Bedingungen von while- und for-Schleifen sowie switch-Fälle basieren intern vollständig auf logischen Berechnungen.
Es existieren drei zentrale Operatoren: UND, ODER, NICHT
| Operator | Bezeichnung | Funktionsbeschreibung |
|---|---|---|
&& | Logisches UND | Ergebnis ist nur dann true, wenn beide Seiten true sind; Kurzschlussauswertung aktiv |
| || | Logisches ODER | Ergebnis ist sofort true, wenn mindestens eine Seite true ist; Kurzschlussauswertung aktiv |
!expr | Logisches NICHT (Negation) | Kehrt einen booleschen Wert um: true wird zu false, false zu true |
UND, ODER und NICHT funktionieren ähnlich wie Reihen- und Parallelschaltungen aus dem Physikunterricht der Mittelstufe. Die Reihenschaltung entspricht dem UND, die Parallelschaltung dem ODER.
1. Logisches NICHT !
Negiert den Wert eines einzelnen booleschen Ausdrucks.
Syntax:
!boolescherAusdruck
Beispiel
void main() {
bool isMale = false;
print(!isMale); // true
bool flag = true;
print(!flag); // false
}Code-Sprache: PHP (php)
Ursprünglich haben isMale den Wert false und flag den Wert true; durch die Negation erhalten wir jeweils den entgegengesetzten Wert.
Man kann den Operator auch auf komplette Ausdrücke anwenden, zum Beispiel
void main() {
int age = 12;
print(!(age>18)); // true
}Code-Sprache: JavaScript (javascript)
Der Ausdruck age > 18 ergibt zunächst false, durch das vorangestellte ! wird der Wert umgekehrt und true ausgegeben.
2. Logisches UND &&
| Ausdruck | Ergebnis |
|---|---|
true && true | true |
true && false | false |
false && true | false |
false && false | false |
Nur wenn beide Seiten true sind, ist das Ergebnis true; ist eine Seite false, lautet das Ergebnis stets false.
Eigenschaft der Kurzschlussauswertung: Ist die linke Seite false, wird der Code auf der rechten Seite nicht ausgeführt und sofort false zurückgegeben.

Nur wenn beide Schalter geschlossen sind (true), leuchtet die Lampe (true). Ist auch nur einer geöffnet (false), bleibt die Lampe aus (false). Wenn die linke Seite bereits false ist, braucht die rechte nicht mehr geprüft zu werden.
void main() {
bool fun1() {
print("Die Funktion wurde ausgeführt!");
return true;
}
bool left = false;
// Linker Wert ist false, daher wird fun1() nicht ausgeführt
bool res = left && fun1();
print("Endergebnis: $res");
}Code-Sprache: PHP (php)
Ausgabeergebnis
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Endergebnis: false
Code-Sprache: JavaScript (javascript)
Selbst wenn fun1 Fehler oder Ausnahmen enthalten würde, treten diese nicht auf, da die Funktion niemals ausgeführt wird.
Anwendungsbeispiel für logisches UND
void main() {
String name = 'admin';
String password = '123321';
// &&: Bedingung trifft nur zu, wenn beide Seiten true sind
if (name=='admin' && password =='456654') {
print("Login erfolgreich");
} else {
print("Benutzername oder Passwort falsch");
}
}Code-Sprache: JavaScript (javascript)
Ausgabeergebnis
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Benutzername oder Passwort falschCode-Sprache: CSS (css)
3. Logisches ODER ||
Ist die linke Seite true, wird der Code rechts nicht ausgeführt und sofort true zurückgegeben.
| Ausdruck | Ergebnis |
|---|---|
| true || true | true |
| true || false | true |
| false || true | true |
| false || false | false |
Sehen wir uns ein Beispiel an
void main() {
bool fun1() {
print("Funktion ausgeführt");
return true;
}
// Linker Wert true, Kurzschlussauswertung greift, fun1() läuft nicht
bool res = true || fun1();
print(res); // true
}Code-Sprache: PHP (php)
Da die linke Seite von || true ist, wird die Funktion fun1 rechts nicht ausgeführt.

Bei zwei Schaltern leuchtet die Lampe bereits, wenn nur einer geschlossen ist (true).
void main() {
bool isParentAgree = true;
int age = 12;
if(age>=13 || isParentAgree){
print("Eintritt erlaubt");
}
}Code-Sprache: JavaScript (javascript)
Zusammenfassung
A && B: Ist A false, wird direkt false zurückgegeben, B wird weder geprüft noch ausgeführt
A || B: Ist A true, wird direkt true zurückgegeben, B wird weder geprüft noch ausgeführt
Dies verbessert die Ausführungsgeschwindigkeit und verhindert Laufzeitfehler (häufig bei null-Prüfungen eingesetzt)
Beispiel:
String? name;
// Nur wenn name nicht null ist, wird length aufgerufen; Kurzschluss schützt vor Null-Fehler
if(name != null && name.length > 0)
{
}Code-Sprache: JavaScript (javascript)
Würde man direkt name.length aufrufen, würde ein Fehler auftreten, da name null ist und keine Eigenschaft length besitzt. Durch die vorherige Prüfung name != null: ist name null, ist die erste Bedingung false, der Rest wird nicht ausgeführt und es entsteht kein Fehler.
Priorität der drei logischen Operatoren
! > && > ||
Wie bei mathematischen Berechnungen werden Operatoren mit höherer Priorität zuerst berechnet. Um die Reihenfolge zu ändern, nutze Klammern
().
if (!done && (col == 0 || col == 3)) {
// ...Beliebige Aktion ausführen...
}Code-Sprache: JavaScript (javascript)
Detaillierte Berechnungsreihenfolge:
- Innerhalb der Klammern: Zuerst
col == 0 || col == 3berechnen (Prüfung ob die Spalte 0 oder 3 ist) - Negation mit
!donedurchführen - Beide Ergebnisse mit
&&verknüpfen
Beispiel
void main() {
bool done = false;
int col = 3;
// Offizielles Beispiel
if (!done && (col == 0 || col == 3)) {
print("Logik ausgeführt: Nicht abgeschlossen und Spalte ist 0 oder 3");
}
// Demonstration logisches NICHT !
bool isFinish = true;
print(!isFinish); // false
// Demonstration logisches UND &&
int a = 10, b = 20;
if (a > 5 && b > 10) {
print("a ist größer als 5 UND b größer als 10");
}
// Demonstration logisches ODER ||
int score = 55;
if (score < 60 || score > 90) {
print("Note ungenügend ODER ausgezeichnete Note");
}
// Demonstration Kurzschlussauswertung
bool func() {
print("Funktion wurde ausgeführt");
return true;
}
false && func(); // Linker Wert false, func wird nicht ausgegeben
true || func(); // Linker Wert true, func wird nicht ausgegeben
}Code-Sprache: PHP (php)
Ausgabeergebnis
D:\dartdemo\firstdart>dart run
Building package executable...
Built firstdart:firstdart.
Logik ausgeführt: Nicht abgeschlossen und Spalte ist 0 oder 3
false
a ist größer als 5 UND b größer als 10
Note ungenügend ODER ausgezeichnete NoteCode-Sprache: JavaScript (javascript)