3.7 Boolescher Datentyp
Im C99-Standard wurde mit _Bool ein boolescher Wahrheitswert eingeführt, der auf jeden Fall groß genug ist, um die Werte 0 (= falsch) und 1 (= wahr) aufzunehmen. Der Datentyp _Bool gehört zur Gruppe der unsigned-Ganzzahltypen.
Glücklicherweise existiert für den Typ _Bool (ebenfalls seit C99) in der Header-Datei stdbool.h das Makro bool, sodass Sie den Bezeichner bool wie in C++ verwenden können. Allerdings müssen Sie hierzu die Header-Datei stdbool.h inkludieren. Manche fremden Programme enthalten auch folgende Definition, anstatt die entsprechende Header-Datei einzufügen:
typedef enum {false,true} bool;
Also wundern Sie sich nicht, wenn Sie auf solche Definitionen in fremden Programmen treffen; diese sind sehr verbreitet, vor allem auf Systemen mit wenig Speicher. Boolesche Werte sind Elemente einer »booleschen Algebra«, die einen von zwei möglichen Werten annehmen können. Dieses Wertepaar hängt von der Anwendung ab und lautet entweder wahr/falsch, true/false oder eben ungleich 0/gleich 0. In C kann hierfür das Wertepaar true (für wahr = 1) und false (für falsch = 0) verwendet werden, dass in der Header-Datei stdbool.h definiert ist.
Sie können auch das Paar ungleich 0 (für wahr) und gleich 0 (für falsch) als Dezimalwert verwenden. Hierzu ein kleines Beispiel:
#include <stdbool.h>
// ...
// Schalter auf Wahr setzen
_Bool b1 = 1;
// Schalter auf Unwahr setzen
_Bool b2 = 0;
// benötigt <stdbool.h>
bool b3 = true; // wahr
// benötigt <stdbool.h>
bool b4 = false; // unwahr
Um hier kein Durcheinander zu verursachen, muss noch erwähnt werden, dass der C-Standard seit C99 den Typ _Bool als echten Datentyp implementiert. Das Makro bool und das Wertepaar true bzw. false (kleingeschriebene Variante) können Sie aber nur verwenden, wenn Sie die Header-Datei <stdbool.h> inkludieren.