C 言語 | フロー制御 | switch 文

switch 文は、1 つの値に応じて複数の処理から 1 つを選択する。

複数の分岐

多くの定数値で分岐する場合、長い if else if は読みにくい。そこで switch を使用する。

switch () {
case 定数:
  
  break;
default:
  デフォルトの文
}

switch は式を評価し、一致する case ラベルへ移動する。case の値は定数であり、重複できない。どの case にも一致しない場合は default を実行する。

break がなければ、続くラベルの文も実行される。この動作をフォールスルーと呼ぶ。

switch (0) {
case 0:
 printf("case 0");
 break;
case 1:
 printf("case 1");
 break;
default:
 printf("default");
}

casedefault は省略できる。一致するラベルがなく default もない場合は、何も実行しない。

コード 1

#include <stdio.h>

int main() {
 int selected;
 printf("0=最初, 1=次, 2=最後 >");
 scanf("%d", &selected);

 switch(selected) {
 case 0:
   printf("最初の選択です。\n");
   break;
 case 1:
   printf("2 番目の選択です。\n");
   break;
 case 2:
   printf("3 番目の選択です。\n");
   break;
 default:
   printf("正しい番号を入力してください。\n");
 }
 return 0;
}

case 'A': のように文字定数も指定できる。