Od ANSI C99 istnieje _Bool
lub bool
poprzez stdbool.h
. Ale czy istnieje również specyfikator formatu printf
dla bool?
Mam na myśli coś takiego jak w tym pseudo kodzie:
bool x = true;
printf("%B\n", x);
co spowodowałoby wydrukowanie:
true
Nie ma'nie. Ale ponieważ każdy typ całkowity krótszy niż int
jest promowany do int
, gdy jest przekazywany do argumentów variadic, możesz użyć %d
:
bool x = true;
printf("%d\n", x); // prints 1
Ale dlaczego nie
printf(x ? "true" : "false");
albo lepiej
printf("%s", x ? "true" : "false");
albo jeszcze lepiej
fputs(x ? "true" : "false", stdout);
zamiast tego?
Nie istnieje żaden specyfikator formatu dla bool. Możesz go wydrukować używając niektórych z istniejących specyfikatorów do drukowania typów integralnych lub zrobić coś bardziej wymyślnego:
printf("%s", x?"true":"false");