Aber selbstverständlich gibt es in C einen boolschen Datentypen. Aus ISO/IEC 9899: [...]
Ich behaupte: Nein.
Nur dadurch, dass die Konstanten true und false definiert werden, existiert noch lange kein eigenständiger Datentyp.
Nein. Aber durch die Definition im Standard. Wie dieser Datentyp implementiert wird ist völlig irrelevant, wichtig ist nur, was der Standard dazu sagt. Und wenn der sagt "es gibt einen boolschen Datentyp", dann gibt es ihn. Wie der letztenendes im Compiler implementiert ist, ist dabei nicht wichtig.