switch は Ruby の case と同様の多分岐選択だ。一般的な形式は次の通り。
switch (値) {
case 定数1:
文;
....
break;
case 定数2:
文;
....
break;
default:
文;
....
break;
}
注意点といえば、
- 値の比較は等価かどうかしか判定できないこと
- 値には int か char しか使えないこと
- case のあとの一連の文には { } が不要なこと
- 一連の文の最後には break; が必要なこと
break; がないと break; に(あるいは switch の最後に)行き当たるまで文が実行されてしまう。これを利用する書き方もあるようだけど、あまりいいとは思えない。
次のプログラムは、入力された整数に対応する単語を出力する。
#include
int main(void)
{
int i;
printf("Input integer: ");
scanf("%d", &i);
switch (i) {
case 1:
printf("ONE\n");
break;
case 2:
printf("TWO\n");
break;
case 3:
printf("THREE\n");
break;
default:
printf("MANY\n");
}
return 0;
}
実行例:
takatoh@nightschool $ ./sample_3_9 Input integer: 2 TWO takatoh@nightschool $ ./sample_3_9 Input integer: 4 MANY