Gibt es in C den Datentyp Boolean?



  • Hallo,
    gibt es in C den Datentyp Boolean? Ich habe mal einen Test geschrieben:

    #include <stdio.h>
    
    int main()
    {
        bool a;
        a = 1;
        printf("Wert a: %d\n", a);
        getchar();
        return 0;
    }
    

    Ergebnis: Funktioniert! Auch mit 0! Aber warum kann ein bool z.B. den wert 255 annhemen und bei printf kommt dann 1 raus?



  • Seit C99 gibt es in C einen Boolean-Typ. Das dazugehörige Keyword* ist _Bool. In <stdbool.h> müssen zudem Makros definiert sein, welche die (übliche) Schreibweise bool erlauben.

    Dass Du einem bool auch den Wert 255 (oder andere) zuweisen kannst und diese trotzdem nur 0 oder 1 sind liegt natürlich daran, dass bool eben nur diese beiden Werte annehmen kann. Aus 0 wird 0 (boolean), aus allem !=0 wird 1 (boolean).

    * Dass in unseren feinen [cpp]-Tags das bool trotzdem blau hinterlegt wird, ist Schuld des C++-Parts. In C ist bool _kein_ Keyword.


Anmelden zum Antworten