591

ANSI C99 以降_Bool、 orbool経由がありstdbool.hます。printfしかし、ブールのフォーマット指定子もありますか?

私はその擬似コードのようなものを意味します:

bool x = true;
printf("%B\n", x);

これは次のように出力されます:

true
4

8 に答える 8

911

型の書式指定子はありませんbool。ただし、より短い整数型はの可変引数に渡されるintと昇格されるため、次を使用できます。intprintf()%d

bool x = true;
printf("%d\n", x); // prints 1

しかし、そうではありません:

printf(x ? "true" : "false");

または、より良い:

printf("%s", x ? "true" : "false");

または、さらに良い:

fputs(x ? "true" : "false", stdout);

代わりは?

于 2013-06-25T20:52:10.597 に答える
51

の書式指定子はありませんbool。整数型を印刷するための既存の指定子のいくつかを使用して印刷するか、より凝ったことを行うことができます。

printf("%s", x?"true":"false");
于 2013-06-25T20:52:02.353 に答える
13

の伝統ではitoa()

#define btoa(x) ((x)?"true":"false")

bool x = true;
printf("%s\n", btoa(x));
于 2013-06-25T21:00:48.410 に答える
5

できませんが、0または1を印刷できます

_Bool b = 1;
printf("%d\n", b);

ソース

于 2013-06-25T20:52:53.297 に答える
3

使用したブール値に基づいて 1 または 0 を出力するには、次のようにします。

printf("%d\n", !!(42));

フラグで特に便利です:

#define MY_FLAG (1 << 4)
int flags = MY_FLAG;
printf("%d\n", !!(flags & MY_FLAG));
于 2016-12-09T13:26:18.453 に答える
2

CよりもC++の方が好きなら、これを試すことができます:

#include <ios>
#include <iostream>

bool b = IsSomethingTrue();
std::cout << std::boolalpha << b;
于 2016-01-19T19:48:49.610 に答える