以前に取り上げたif文は、ある条件の判定結果でプログラムの流れを二つに分岐した。ここでは、switch文を取り上げる。一度に複数に分岐できる。
switch(評価したい変数) {
case 値1:
処理1
break;
case 値2:
処理2
break;
default:
デフォルトの処理
}
switch文は次のように動作する。
- 式を評価して値を求める。
- 式の値に一致する値が書かれているcaseがある場合、そのcase以下の文を実行する。そして、break文を実行し、switch文を終了する。
- 式の値がいずれのcaseにも一致しない場合は、default以下の文を実行する。そして、break文を実行し、switch文を終了する。
なお、defaultは省略できる。このとき、式の値がいずれのcaseにも一致しない場合は、何も処理をしないでswitch文を終了する。
このswitch文で、読み込んだ月の季節を表示するプログラムを考えてみよう。
//読み込んだ月の季節を表示するプログラム
#include <stdio.h>
int main(void) {
int month; //月
printf("何月ですか:");
scanf("%d",&month);
switch(month)
{
case 3:
case 4:
case 5:
printf("%d月は春です\n",month);
break;
case 6:
case 7:
case 8:
printf("%d月は夏です\n",month);
break;
case 9:
case 10:
case 11:
printf("%d月は秋です\n",month);
break;
case 12:
case 1:
case 2:
printf("%d月は冬です\n",month);
break;
default:
printf("%d月はありませんよ!!\n",month);
}
return 0;
}
実行結果
何月ですか:3
3月は春です
何月ですか:8
8月は夏です
何月ですか:13
13月はありませんよ!!
break文がないところでは、プログラム流れが次の文に落ちることがわかる。これをフォール・スルー(fall through)と呼ぶ。
いかがであろうか。この小文でC言語に少しでも興味を持っていただけたら幸いである。
(参考文献)新・明解C言語 入門編 第2版 柴田望洋著(SBクリエイティブ)、基礎C言語 (株)アンク著(インプレス )
コメント