Sinds ANSI C99 is er _Bool
of bool
via stdbool.h
. Maar is er ook een printf
format specifier voor bool?
Ik bedoel zoiets als in die pseudo code:
bool x = true;
printf("%B\n", x);
die zou afdrukken:
true
Dat is er niet. Maar omdat elk integraal type korter dan int
wordt gepromoveerd tot int
wanneer het wordt doorgegeven aan printf()
s variadische argumenten, kun je %d
gebruiken:
bool x = true;
printf("%d\n", x); // prints 1
Maar waarom niet
printf(x ? "true" : "false");
of beter
printf("%s", x ? "true" : "false");
of nog beter
fputs(x ? "true" : "false", stdout);
in plaats daarvan?
Er is geen formaat specificatie voor bool. U kunt het afdrukken met behulp van enkele van de bestaande specifiers voor het afdrukken van integrale types of iets meer fancy doen:
printf("%s", x?"true":"false");