
C言語入門|switch 文で分岐をスッキリ書く:if 連鎖の改良テクニック
「if 文はもう慣れてきたけど、
else if が何個も続くと、ちょっと読みにくいなぁ…🤔」
そんなふうに感じたこと、ありませんか?
実はその感覚、とっても正しいんです👍
同じ変数を何度も == で比較する if の連鎖 は、
C言語では switch 文 を使うことで、
ぐっとスッキリ書き直せる場合があります✨
この章では、
- if–else if–else 構文の「もやっとポイント」
- switch 文が得意な分岐パターン
- switch 文の基本構文と考え方
を、例を交えながらやさしく解説していきます😊

if 連鎖が長くなると何がつらい?😵💫
まずは、よくある if–else if–else の例を見てみましょう。
int level = rand() % 4 + 1;
if (level == 1) {
printf("ノーマルモード\n");
} else if (level == 2) {
printf("ハードモード\n");
} else if (level == 3) {
printf("エクストラモード\n");
} else {
printf("カオスモード\n");
}このコード、動きとしてはまったく問題ありません👍
でも、よく見ると…
- 比較しているのはずっと同じ変数 level
- 条件式はすべて level == 数値
- else if が増えるほど縦に長くなる
という特徴がありますよね💡
こうしたケースでは、
switch 文を使うと、分岐の意図が一目で伝わる ようになります✨
switch 文が得意な分岐条件🎯
すべての if 文が switch に置き換えられるわけではありません。
switch 文が向いているのは、次の条件を満たす場合です。
switch 文に書き換えやすい条件
| 条件 | 説明 |
|---|---|
| 比較が == のみ | < や >、!= は使えない |
| 同じ変数を比較 | 毎回同じ変数をチェックしている |
| 値が整数系 | char, short, int, long, enum など |
今回の例は、
「同じ変数を整数と比較している」
という点で、まさに switch 向きですね😊
switch 文の考え方🧠
switch 文は、
「この値が、どのケースに当てはまるか?」
をまとめて分岐する構文です。
イメージとしては、
- 条件値を1回だけ評価
- 一致した case ラベルへジャンプ
- 対応する処理を実行
という流れになります✨
switch 文の基本構文📘

switch (条件値) {
case 値1:
処理1
break;
case 値2:
処理2
break;
default:
処理X
}それぞれの要素の意味を整理すると👇
| 要素 | 役割 |
|---|---|
| switch (条件値) | 分岐の元になる値 |
| case 値: | 条件値と一致したときの入口 |
| break | switch 文を抜ける |
| default | どの case にも当てはまらない場合 |
if 連鎖を switch 文に書き換えてみよう✨
先ほどの if–else if–else の例を、
switch 文で書き直してみます。
サンプルプログラム
int level = rand() % 4 + 1;
switch (level) {
case 1:
printf("ノーマルモード\n");
break;
case 2:
printf("ハードモード\n");
break;
case 3:
printf("エクストラモード\n");
break;
default:
printf("カオスモード\n");
}どうでしょう?😊
- 条件が横並びで見やすい。
- どの値で何が起きるか一目瞭然
- 変数名が何度も出てこない。
と、かなりスッキリしましたよね✨
break を忘れるとどうなる?⚠️
switch 文で特に重要なのが break です。
break を書かないと、
次の case に処理が流れ込む(フォールスルー)
という動作になります。
switch (n) {
case 1:
printf("1です\n");
case 2:
printf("2です\n");
}この場合、n が 1 だと
「1です」「2です」
の両方が表示されてしまいます😱
初心者のうちは、
case の最後には必ず break を書く
と覚えておくのが安全です👍
default は省略できるけど…🤔
default ラベルは省略できますが、
基本的には書いておくべき です。
理由は、
- 想定外の値が来たときの保険になる。
- デバッグ時に異常に気づきやすい。
からです😊
default:
printf("未定義の値です\n");こうした一文があるだけで、
プログラムの安心感がグッと上がります✨
まとめ:if と switch の使い分けが大事🌱
最後に、if 文と switch 文の役割を整理しておきましょう。
| 構文 | 向いている場面 |
|---|---|
| if 文 | 範囲判定、複雑な条件式 |
| if–else if–else | 条件が少ない場合 |
| switch 文 | 同じ変数を == で分岐する場合 |
「全部 switch にすればいい」わけではなく、
分岐の形に合わせて使い分ける のがポイントです😊
