Kopš ANSI C99 ir _Bool
vai bool
, izmantojot stdbool.h
. Bet vai ir arī printf
formāta specifikators bool?
Es domāju kaut ko tādu, kā šajā pseidokodā:
bool x = true;
printf("%B\n", x);
kas izdrukātu:
true
Tā nav. Bet, tā kā jebkurš integrālais tips, kas ir īsāks par int
, tiek paaugstināts uz int
, kad tas tiek nodots printf()
mainīgajiem argumentiem, jūs varat izmantot %d
:
bool x = true;
printf("%d\n", x); // prints 1
Bet kāpēc ne
printf(x ? "true" : "false");
vai labāk
printf("%s", x ? "true" : "false");
vai vēl labāk
fputs(x ? "true" : "false", stdout);
tā vietā?
Nav formāta specifikatora bool. To var izdrukāt, izmantojot kādu no esošajiem integrālo tipu drukāšanas specifikatoriem vai arī izmantojot kaut ko izdomātāku:
printf("%s", x?"true":"false");