Zurück zu: C Tutorial
True Love in C? Boolesche Werte und die Kunst, Entscheidungen zu treffen!
Sehr häufig wirst du beim Programmieren einen Datentyp benötigen, der nur einen von zwei Werten annehmen kann. Beispielsweise:
- JA / NEIN
- AN / AUS
- WAHR / FALSCH
Solche Werte die entweder wahr
oder falsch
sind nennt man boolesche Werte oder Wahrheitswerte.
Ein Datentyp für Wahrheitswerte?
In der Programmiersprache C gibt es ursprünglich keinen eigenen Datentyp für boolesche Werte. Stattdessen steht der Wert 0 für false (falsch), und alle anderen Zahlen gelten als true (wahr). In C kann jeder Zahlenwert auch als Wahrheitswert verwendet werden: 0 steht für falsch, während alle anderen Werte ungleich 0 als wahr gelten. Der folgende Code gibt somit „Hallo Welt“ und nicht „Hallo Welt!“ aus, da 5 und 2 ungleich 0 sind, also wahr. Die letzte print-Anweisung für das Ausrufezeichen wird hingegen nicht ausgegeben, da 0 als falsch interpretiert wird.
#include <stdio.h>
int main()
{
if(5) {
printf("Hallo ");
}
if(1) {
printf("Welt");
}
if(0) {
printf("!");
}
return 0;
}
Wenn C einen Wahrheitswert erzeugen muss, wird immer der Integer-Wert 1 für wahr
und 0 für falsch
verwendet. Im Gegensatz dazu nutzen andere Programmiersprachen wie C++ an dieser Stelle echte boolesche Werte.
Beispielsweise ergibt der Ausdruck 4 < 7
in C den Wert 1. Deshalb wird im folgenden Beispiel der Variable x
der Wert 4 zugewiesen, da (4 < 7)
als 1 ausgewertet wird:
#include <stdio.h>
int main()
{
int x = 3 + (4<7); //
printf("x: %d",x);
return 0;
}
Erst ab der Version C99 werden Wahrheitswerte unterstützt. Dafür muss die Header-Datei stdbool.h mit eingebunden werden:
#include <stdbool.h>
Eine boolesche Variable wird mit dem Schlüsselwort bool
deklariert und kann die Werte true (wahr) oder false (falsch) annehmen:
bool istLeer = true;
Auch an dieser Stelle gilt, dass boolesche Werte als Ganzzahlen zurückgegeben werden:
1
(oder jede andere Zahl ungleich 0) steht fürwahr
0
steht fürfalsch
Daher kann an dieser Stelle der Formatbezeichner %d
verwendet werden um einen booleschen Wert mit print auszugeben:
Beispiel
bool istLeer = true;
printf("%d", istLeer); // gibt 1 (true) zurück
Vergleichen von (Wahrheits)Werten
Der Vergleich von (Wahrheits)Werten ist super praktisch beim Programmieren, weil er dir hilft, Antworten zu finden und Entscheidungen zu treffen. Du kannst zum Beispiel den Größer-als-Operator (>
) verwenden, um zwei Werte miteinander zu vergleichen:
Beispiel
printf("%d", 10 > 9); // Gibt 1 (true) zurück (10 ist größer als 9)
Genauso können natürlich auch zwei Variablen miteinander verglichen werden:
Beispiel
int x = 10;
int y = 9;
printf("%d", x > y);
Im folgenden Beispiel verwenden wir den Gleichheitsoperator (==
), um verschiedene Werte zu vergleichen:
Beispiel
printf("%d", 10 == 10); // gibt 1 (true) zurück (10 ist gleich 10)
printf("%d", 10 == 15); // gibt 0 (false) zurück (10 ist ungleich 15)
printf("%d", 5 == 55); // gibt 0 (false) zurück (5 ist ungleich 55)
Natürlich können auch boolesche Variablen verglichen werden:
Beispiel
bool istLeer = true;
bool istOben = true;
printf("%d", istLeer == istoben);
Denke daran, die Header-Datei
<stdbool.h>
einzuschließen, wenn du mitbool
Variablen arbeiten.
Beispiel aus dem echten Leben
Du möchtest herausfinden, ob jemand alt genug ist, um wählen zu dürfen? Im nächsten Beispiel verwenden wir den Vergleichsoperator >=
, um zu prüfen, ob das Alter größer oder gleich der Wahlaltersgrenze von 18 Jahren ist:
int alter = 25;
int wahlAlter = 18;
printf("%d", alter >= wahlAlter); // gibt 1 (true) zurück (da 25 >= 18)
Cool, oder? Ein noch besserer Ansatz wäre, den obigen Code in eine if…else
Anweisung einzuschließen, sodass wir je nach Ergebnis unterschiedliche Aktionen ausführen können:
Gibt „Alt genug zum Wählen!“ aus, wenn alter
größer oder gleich 18
ist. Andernfalls gibt „Nicht alt genug zum Wählen!“ aus:
int alter = 25;
int wahlAlter = 18;
if (alter >= wahltAlter) {
printf("Alt genug zum Wählen!");
} else {
printf("Nicht alt genug zum Wählen!");
}
Merk dir: Wahrheitswerte (boolesche Werte) sind die Grundlage für Vergleiche und Entscheidungen im Programmieren.
Mehr zu Bedingungen (
if…else
) erfährst du im nächsten Kapitel.