ANSI C99 以降_Bool
、 orbool
経由がありstdbool.h
ます。printf
しかし、ブールのフォーマット指定子もありますか?
私はその擬似コードのようなものを意味します:
bool x = true;
printf("%B\n", x);
これは次のように出力されます:
true
型の書式指定子はありませんbool
。ただし、より短い整数型はの可変引数に渡されるint
と昇格されるため、次を使用できます。int
printf()
%d
bool x = true;
printf("%d\n", x); // prints 1
しかし、そうではありません:
printf(x ? "true" : "false");
または、より良い:
printf("%s", x ? "true" : "false");
または、さらに良い:
fputs(x ? "true" : "false", stdout);
代わりは?
の書式指定子はありませんbool
。整数型を印刷するための既存の指定子のいくつかを使用して印刷するか、より凝ったことを行うことができます。
printf("%s", x?"true":"false");
の伝統ではitoa()
:
#define btoa(x) ((x)?"true":"false")
bool x = true;
printf("%s\n", btoa(x));
使用したブール値に基づいて 1 または 0 を出力するには、次のようにします。
printf("%d\n", !!(42));
フラグで特に便利です:
#define MY_FLAG (1 << 4)
int flags = MY_FLAG;
printf("%d\n", !!(flags & MY_FLAG));
CよりもC++の方が好きなら、これを試すことができます:
#include <ios>
#include <iostream>
bool b = IsSomethingTrue();
std::cout << std::boolalpha << b;