
C言語入門|C言語における真偽値型:bool・true・falseと歴史的背景を学ぶ
プログラムには、「はい or いいえ」「成功 or 失敗」「存在する or しない」といった 二択 を表す処理がたくさんありますよね😊
こうした二者択一の情報を記録するために使われるのが 真偽値型(boolean type) です。
C言語ではこの役割を持つのが bool 型。
代入できる値は true(真) と false(偽) の2つだけです。

🔍 まずは bool 型をサクッと理解しよう
例として、次のような状況を考えてみます👇
- ログインに成功したかどうか
- センサーが異常を検知したか
- データが読み込めたかどうか
これらはすべて true / false で表現できます。
🧪サンプルプログラム
プロジェクト名:2-6-1 ソースファイル名: sample2-6-1.c
#include <stdio.h>
#include <stdbool.h>
int main(void)
{
bool isLoggedIn = true; // ログイン成功
bool hasWarning = false; // 警告なし
printf("ログイン状態: %d\n", isLoggedIn);
printf("警告の有無: %d\n", hasWarning);
return 0;
}📝 動作のポイント
printf で bool を表示するときは %d を使います。
これは内部的に bool が整数として扱われるためです。
| 値 | 表示される数値 |
|---|---|
| true | 1 |
| false | 0 |
📘 命令の書式を丁寧に解説するよ✨
bool 型
- <stdbool.h> をインクルードすると利用可能
- true / false を扱う型
書式
bool 変数名;printf
書式
printf("書式文字列", 値);今回は bool を整数扱いしているため
printf("%d\n", isLoggedIn);のように %d を使う点に注意です。
🗂️ さらに理解が深まる!true と false の性質まとめ
| キーワード | 役割 | 説明 |
|---|---|---|
| bool | 真偽値型 | true か false のどちらかを格納 |
| true | 真 | 条件が成立、成功などを意味 |
| false | 偽 | 条件が不成立、失敗などを意味 |
| <stdbool.h> | 追加ヘッダ | 古いC環境ではこれが必要 |
🕰️ 歴史の話:昔の C 言語には bool が存在しなかった!
実は、C言語が誕生した当初には、
- bool
- true
- false
という概念が存在しませんでした😲
そのため、 整数型(int)で真偽値を表す文化 が長く使われていたのです。
🧱 int 型で真偽値を表していた頃の話
昔はこのように書くのが普通でした👇
int isConnected = 1; // 真(true)
int isError = 0; // 偽(false)そして重要ポイント!
✔ C言語では「真 = 1」とは限らない
0 なら偽、0 以外ならすべて真 なんです。
つまり
| 値 | 解釈 |
|---|---|
| 0 | false |
| 1 | true |
| -1 | true |
| 999 | true |
| 42 | true |
プログラマによっては、true を -1 にしていた時代もあります。
この「0以外は全部真」という仕様は、今でも if 文などで生きています✨
🧠 C言語における真偽値の歴史
【初期のC言語】
bool がない!
↓
int 型で 0 / 1(または0以外)を真偽値として使用
↓
【後のC99】
<stdbool.h> の登場で
bool / true / false が正式採用
↓
【現代の C】
bool を使うのが推奨
C言語の歴史を知ると、
古いコードがなぜ int を使っているのかがよく分かるようになります😊
💡 bool 型はどんなときに使うべき?
| シーン | 選ぶ型 | 理由 |
|---|---|---|
| 成否(成功 or 失敗)を扱う | bool | 最も読みやすい |
| 条件判定に意味を持たせる | bool | 意図が明確になる |
| 古い C コードと互換をとる | int | 歴史的慣習としてよく存在する |
結論として、
新しいコードでは bool を使うのがベスト✨
可読性が高く、バグが減ります。
