Boolesche Werte

0

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ür wahr
  • 0 steht für falsch

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 mit bool 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.

Nach oben scrollen