元々Cには論理型がなかった。Cの後継とも言えるC++では、Cにはない予約語boolが追加されている。 そしてCでも、C99から論理型として_Boolが予約語に追加された。 本来はC++と同様にboolとしたかったが、既に多くのCプログラムで独自にbool型を定義してしまっていたため、混乱を避けるためにいくつかの小細工をしている。 _Bool型は、0または1を格納するのに充分な大きさを持っている、符号無しの整数型である。 つまり、この変数には0や1を「即値で」代入することになる。 とは言え、これでは不便かつ分かりにくいので、C99では「stdbool.h」という新しいヘッダーファイルが定義された。この中で、次のような定義がされている。 #define true 1 #define false 0 つまり、C++のそれとは異なり、このtrue/falseは予約語ではなく単なるマクロで、int型