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