Ric*_*sen 14 c standards printf c99
有了printf(),我可以使用%hhu了unsigned 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是一个无符号整数类型,足以存储值0和1.你可以这样打印_Bool:
_Bool b = 1;
printf("%d\n", b);
Run Code Online (Sandbox Code Playgroud)
由于整数促销规则,_Bool保证推广到int.
直到C99,bool不是标准C的一部分,因此不作为printf修饰符存在.C99,定义_Bool(你正在使用)是一个整数,因此你应该把它作为一个整数来展示(至少从机器的角度来看).或者,您可以执行以下操作:
printf("%d",foo?1:0);
Run Code Online (Sandbox Code Playgroud)