
C言語のきほん|多分岐の条件文
条件が増えても迷わない。if~else if~else~で、分岐をスッキリ整理しよう!
if文を覚えると、プログラムが一気に“賢く”見えてきますよね。
でも、少し慣れてくるとこう思います。
- 条件が2つじゃ足りない…
- 3つ、4つ、もっと場合分けしたい…
- しかも「どれか1つだけ実行」してほしい…
そんなときに登場するのが if~else if~else~ です。
これは「上から順番に条件をチェックして、最初に当たった処理だけ実行する」ための書き方です。
イメージとしては、店員さんがあなたに質問していく感じです。
- これに当てはまる? → はいなら決定
- じゃあ次、これは? → はいなら決定
- どれでもない? → 最後の案(else)へ
この“順番にチェックして、最初の1つに決める”という性質が、多分岐の基本になります。
if~else if~else~は「上から順に当てはめるルール」
基本構文はこれです。
if (条件式1) {
文1;
}
else if (条件式2) {
文2;
}
else if (条件式n) {
文n;
}
else {
文m;
}ここで大事なのは次の2つです。
- 条件は上から順に評価される
- 最初に真になったブロックだけ実行され、残りは見ない
つまり、上の方で条件に当たったら、その時点で勝負が決まります。
分岐の流れを図でつかもう(頭の中の動き)
文章だけだと「結局どう流れるの?」となりやすいので、超シンプルに図で表しますね。
| 判定の順番 | チェックすること | 真なら | 偽なら |
|---|---|---|---|
| 1 | 条件式1 | 文1を実行して終了 | 次へ |
| 2 | 条件式2 | 文2を実行して終了 | 次へ |
| … | 条件式n | 文nを実行して終了 | 次へ |
| 最後 | どれも真じゃない | 文mを実行して終了 | なし |
ポイントは「終了」ってところです。
当たったら、その下にある条件はもう確認しません。
プログラム例:気温で服装アドバイスを変える
ファイル名:8_6_1.c
#include <stdio.h>
int main(void)
{
int temp;
printf("今日の気温(℃)を入力してね > ");
scanf("%d", &temp);
if (temp >= 30) {
printf("かなり暑い!水分補給を忘れずにね。\n");
}
else if (temp >= 20) {
printf("過ごしやすい気温だよ。軽めの服でOK!\n");
}
else if (temp >= 10) {
printf("ちょっとひんやり。上着があると安心だね。\n");
}
else {
printf("寒い!しっかり防寒して出かけよう。\n");
}
return 0;
}実行結果の例(どの分岐に入ったか確認しよう)
例1:temp が 30 以上(最上段の条件にヒット)
入力が 33 の場合:
- temp >= 30 が真 → 1段目が実行
- その下の else if 以降は見ない
出力イメージ:
- かなり暑い!水分補給を忘れずにね。
例2:temp が 20 以上 30 未満(2段目にヒット)
入力が 24 の場合:
- temp >= 30 は偽
- temp >= 20 は真 → 2段目が実行
- 以降は見ない
出力イメージ:
- 過ごしやすい気温だよ。軽めの服でOK!
例3:temp が 10 以上 20 未満(3段目にヒット)
入力が 15 の場合:
- 1段目:偽
- 2段目:偽
- 3段目:真 → 実行
出力イメージ:
- ちょっとひんやり。上着があると安心だね。
例4:temp が 10 未満(全部外れて else)
入力が 3 の場合:
- どれも真にならない → else が実行
出力イメージ:
- 寒い!しっかり防寒して出かけよう。
どうして条件の順番が大事なの?
if~else if~else~は「上から順番に当てはめていく」仕組みなので、順番を間違えると想定外の結果になります。
たとえば、こんな並びは危険です。
- temp >= 10 を先に書く
- その後に temp >= 30 を書く
この場合、temp が 35 でも temp >= 10 が真になっちゃうので、暑い判定にたどり着けません。
だから基本は、
- 範囲が広い条件を下に
- 厳しい条件(大きい値など)を上に
という並べ方が安心です。
今回の例も、
- 30以上(かなり暑い)
- 20以上(過ごしやすい)
- 10以上(ひんやり)
- それ以外(寒い)
という順番だから、きれいに分類できます。
「よく当たる条件を上に」の考え方
if~else if~else~は、上から順番に判定します。
だから、実務っぽい話をすると
- よく起きるケースを上
- まれなケースを下
に置くと、平均的に判定回数が減って少し効率が上がります。
ただし、まず優先なのは 正しい条件の順番。
速さよりも、間違えない並びを作るほうが大切です。
