C言語入門|分岐の仕組みを広げる if 文のバリエーション

「あれ? if 文って、もう勉強し終わったんじゃないんですか?」
そう思った人もいるかもしれませんね😊

でも実は、if 文は“基本形だけ”ではありません。
使いこなせるようになると、プログラムの表現力が一気に広がる、とても奥深い構文なんです✨

この章では、これまで学んできた制御構造の後半戦として、
if 文のバリエーション を整理しながら、
「どんな場面で、どの書き方を使えばよいのか?」
をわかりやすく解説していきます👍

if 文には3つのバリエーションがある🧭

C言語の if 文には、次の 3種類の書き方 があります。

種類特徴
if–else 構文真と偽で必ず処理を分けたいとき
if のみの構文条件が真のときだけ何かしたいとき
if–else if–else 構文複数の条件で段階的に分岐したいとき

これらはすべて 条件式の評価結果が偽だったときの扱い方 が異なっています😊

if–else 構文(基本形)🌱

まずは、いちばん基本となる if–else 構文 からおさらいしましょう。

構文の形

if (条件式) {
    ブロック1
} else {
    ブロック2
}

動きのイメージ

  • 条件式が true
    → ブロック1 を実行
  • 条件式が false
    → ブロック2 を実行

必ず どちらか一方が実行される のが特徴です✨

サンプルプログラム

int temperature = 28;
int useAircon;

if (temperature >= 26) {
    useAircon = 1;
    printf("エアコンをつけます\n");
} else {
    useAircon = 0;
    printf("エアコンは必要ありません\n");
}

この例では、
「暑いかどうか」という条件によって、
必ずどちらかのメッセージが表示 されます😊

if のみの構文(else を省略する)🍃

次に紹介するのが、if のみの構文 です。

「条件が満たされたときだけ何かしたい」
「条件が偽のときは何もしなくていい」

そんな場面では、else ブロックは不要ですよね✨

構文の形

if (条件式) {
    ブロック
}

条件式が false の場合は、
何も実行されずにそのまま次へ進みます。

サンプルプログラム

int hp = 40;

if (hp < 50) {
    printf("回復アイテムを使います\n");
}

この場合、

  • hp が 50 未満 → メッセージ表示
  • hp が 50 以上 → 何も起こらない

という、とてもシンプルな分岐になります😊

if–else if–else 構文(多段階分岐)🌈

最後に紹介するのが、
if–else if–else 構文 です。

これは、
「1つ目の条件がダメなら、次の条件」
「それもダメなら、さらに次の条件」
というように、複数の条件で評価したい場合 に使います✨

構文の形

if (条件式1) {
    ブロック1
} else if (条件式2) {
    ブロック2
} else if (条件式3) {
    ブロック3
} else {
    最終ブロック
}

この構文では、

  • 上から順に条件式を評価
  • 最初に true になったブロックだけが実行
  • すべて false なら最後の else が実行

という流れになります😊

サンプルプログラム

int score = 72;
char rank;

if (score >= 90) {
    rank = 'A';
} else if (score >= 75) {
    rank = 'B';
} else if (score >= 60) {
    rank = 'C';
} else {
    rank = 'D';
}

printf("あなたの評価は %c です\n", rank);

この例では、
点数によって 評価ランクが1つだけ決まる ようになっています👍

if–else if–else 構文の大事なルール📌

この構文には、必ず覚えておきたいルールがあります。

ルール1:else if は位置が決まっている

  • if の直後
  • 最後の else の手前

この場所にしか書けません。

ルール2:else は省略できるが注意⚠️

最後の else ブロックは省略できますが、
予期しない値が来たときの処理が書けなくなる
という大きなリスクがあります。

たとえば先ほどの評価プログラムで else を省略すると、

  • score が 60 未満の場合
  • rank に何も代入されない

という 致命的なバグ になります😱

do nothing(何もしない)場合でも…

「何もしない」のが正しい場合でも、

else {
    // do nothing
}

のように、
意図をコメントで残す のが良い書き方です😊

空文という書き方もある🪶

else ;

これは 空文 と呼ばれ、
「何もしない処理」を意味します。

ただし、可読性は高くないため、
初心者のうちはコメント付きのほうがおすすめです👍

まとめ:if 文を使い分けられると一気に上達✨

if 文のバリエーションを整理すると、次のようになります。

書き方使う場面
if–else真と偽で必ず処理を分けたい。
if のみ真のときだけ処理したい。
if–else if–else複数条件で段階的に分岐したい。

「どの if を使えばいいか?」
を自然に選べるようになると、
読みやすく、バグの少ないコード が書けるようになります😊