広告スペース

第13回 else if・switch

C言語のelse if文とswitch文の使い方。複数条件分岐を解説。

else if ― 3つ以上の分岐

if文は「真か偽か」の2択ですが、3つ以上の場合分けelse if を使います。
int score = 75;
if (score >= 90)      printf("優\n");
else if (score >= 70) printf("良\n");
else if (score >= 50) printf("可\n");
else                   printf("不可\n");
重要: 上から順にチェックされ、最初に真となった分岐だけ実行されます。残りはスキップ。
順序に注意: score >= 50 を先に書くと、90点も70点もここで引っかかり全員「可」になります!厳しい条件から順に。

switch文 ― 値によって分岐

ある変数の値ごとに処理を分けたいときに便利な構文。
int day = 3;
switch (day) {
  case 1: printf("月曜\n"); break;
  case 2: printf("火曜\n"); break;
  case 3: printf("水曜\n"); break;
  default: printf("不明\n");
}
switch(式)
分岐の元になる値を評価
case 値:
その値と等しいとき実行
break;
switchを抜ける (超重要)
default:
どれにも該当しないとき
switchはintやchar値で分岐できます。double値や文字列では使えません。

breakの重要性 ― フォールスルー

break; を書かないと、次のcaseに「落ちて」実行し続けます(フォールスルー)。バグの温床!
switch (n) {
  case 1: printf("A\n");   // breakなし!
  case 2: printf("B\n");   // breakなし!
  case 3: printf("C\n"); break;
}
// n=1 のとき: A, B, C が全部出る!
意図的に使う場合も: 「1または2なら同じ処理」といった共通処理を書くときは、あえてbreakを省きます。
case 1: case 2: printf("小\n"); break;

自分で書いてみよう ― switch

switch.c
出力
「実行」を押してください...
広告スペース

関連する講座

条件分岐編
第11回 条件分岐(if文)
C言語のif文の書き方。条件分岐をフローチャートで視覚的に理解。
繰り返し・配列・文字列
第14回 繰り返し(for/while)
C言語のfor文とwhile文の使い方。ループ処理を図解で解説。
条件分岐編
第12回 確認問題(if)
C言語のif文の理解度を確認するクイズ。
← 前の講座
第12回 確認問題(if)
次の講座 →
第14回 繰り返し(for/while)

確認クイズ

この講座の理解度をチェックしましょう!

Q1. switch 文で break を書かないとどうなる?

コンパイルエラー
次の case に処理が続く(フォールスルー)
何も起きない

break がないと、マッチした case 以降のすべての case が実行されます。これを「フォールスルー」と呼びます。

Q2. switch 文の default は必須?

必須
任意(省略可)
case が3つ以上のとき必須

default は省略可能ですが、どの case にも該当しない場合の処理を書けるため、通常は書くことが推奨されます。

Q3. switch 文の条件に使えない型は?

int
char
float

switch は整数型(int, char など)のみ対応しています。float や double は使えません。

この記事をシェア
X(Twitter)でシェア Facebookでシェア LINEで送る はてブ

この講座の理解を深めるおすすめ書籍

サイトで動きを理解し、書籍で演習量を補うと効果的です

📘
苦しんで覚えるC言語
MMGames 著
初心者向けの定番入門書。丁寧な解説で基礎を固められます。
Amazonで見る
📗
新・明解C言語 入門編
柴田望洋 著
図解が豊富で、演習問題も充実。大学の教科書としても採用多数。
Amazonで見る
📙
プログラミング言語C 第2版
B.W.カーニハン, D.M.リッチー 著
通称K&R。C言語の原典。基礎を終えた後のステップアップに最適。
Amazonで見る

※ 上記リンクはアフィリエイトリンクです。購入によりサイト運営を支援いただけます。