Desde ANSI C99 existe _Bool
o bool
a través de stdbool.h
. Pero, ¿hay también un especificador de formato printf
para bool?
Me refiero a algo como en ese pseudocódigo:
bool x = true;
printf("%B\n", x);
que imprimiría:
true
No lo hay. Pero como cualquier tipo integral más corto que int
es promovido a int
cuando se pasa a los argumentos variádicos de printf()
, puede utilizar %d
:
bool x = true;
printf("%d\n", x); // prints 1
Pero por qué no
printf(x ? "true" : "false");
o mejor
printf("%s", x ? "true" : "false");
o incluso mejor
fputs(x ? "true" : "false", stdout);
¿en su lugar?
No existe un especificador de formato para bool. Puede imprimirlo utilizando algunos de los especificadores existentes para la impresión de tipos integrales o hacer algo más rebuscado:
printf("%s", x?"true":"false");