_Bool的printf转换说明符?

Ric*_*sen 14 c standards printf c99

有了printf(),我可以使用%hhuunsigned char,%hi一个short int,%zu一个size_t,%tx一个ptrdiff_t,等等.

我使用什么转换格式说明符_Bool?标准中是否存在一个?

或者我必须像这样投射:

_Bool foo = 1;
printf("foo: %i\n", (int)foo);
Run Code Online (Sandbox Code Playgroud)

oua*_*uah 11

_Bool类型没有特定的转换长度修饰符.

_Bool是一个无符号整数类型,足以存储值01.你可以这样打印_Bool:

_Bool b = 1;
printf("%d\n", b);
Run Code Online (Sandbox Code Playgroud)

由于整数促销规则,_Bool保证推广到int.


Cla*_*ris 6

直到C99,bool不是标准C的一部分,因此不作为printf修饰符存在.C99,定义_Bool(你正在使用)是一个整数,因此你应该把它作为一个整数来展示(至少从机器的角度来看).或者,您可以执行以下操作:

printf("%d",foo?1:0);
Run Code Online (Sandbox Code Playgroud)

  • 或者如果你想打印一个字符串作为输出,你可以这样做:`printf("foo:%s \n",foo?"true":"false"); (4认同)