ブーリアン型
Rubyにはブーリアン型に相当するようなクラスは無く、false は FalseClassクラスのインスタンス、true は TrueClassクラスのインスタンスである。真偽値としては、false と nil 以外は全て真として扱われるので、空文字列や数値の 0 が偽として扱われる言語に慣れた者や移植の際は注意が必要である。
このコードは "true" を表示する。
nilもオブジェクトであり、NilClassクラスのインスタンスである。
とした場合、それぞれ "FalseClass"、"TrueClass"、"NilClass" が出力される。
C89の規格の範囲内では、ブーリアン型は存在せず、伝統的にintで代用される(C99の _Bool型とシンボルについては後述する)。標準の観点からは移植性・相互運用性は著しく悪化するが、集成体のサイズ削減などの観点から、型サイズが常に1バイトのunsigned charで代用されることもある(JNIヘッダー<jni.h>のjboolean型、COMヘルパー<rpcndr.h>のboolean型など)。
通例、値が 0 であれば偽であり、それ以外は真である。ただし論理否定演算子!による !0 のような式は、真の値の代表値として 1 を返すと標準規格で決められている。他に、ヌルポインタや浮動小数点数 0.0 のような、定数 0 と同様の値が偽として扱われる。
真と偽の値に名前を付けて意味を明確にする際に、列挙型を使う方法もあるが、実際はプリプロセッサマクロが使われていることのほうが多い(Windows APIなど)。
列挙型のほうが、型とその型の変数に代入してよい定数との対応が分かりやすい。デバッガの実装および利用時に関しても、マクロシンボルよりも列挙型のほうが有利である。また、プリプロセッサマクロは名前衝突時に予期せぬ動作を引き起こすこともある。いずれにしても、C99では標準で定義されたものがあるし、そうでなくても大抵の環境では処理系標準ライブラリなどのヘッダーファイル内で同様のシンボルが定義されていることが多いため、プログラマがユーザーコードで明示的に定義する必要はほとんどない。