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 が整数として扱われるためです。

表示される数値
true1
false0

📘 命令の書式を丁寧に解説するよ✨

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 以外ならすべて真 なんです。

つまり

解釈
0false
1true
-1true
999true
42true

プログラマによっては、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 を使うのがベスト✨
可読性が高く、バグが減ります。