制御構文その2 条件分岐(switch編)


・switch

 ある変数の値によって分岐が複数に分かれる時はswitchを使います。

switch(変数)
{
case 値1:
	処理1
case 値2:
	処理2
case 値3:
	処理3

default:
	処理d
}
変数の値が値1の時は処理1から値2の時は処理2から値3の時は処理3からそのどれでもない場合は処理dから以降の処理が実行されます。 つまり値1の時は処理1、2、3、dが値2の時は処理2、3、dが値3の時は処理3、dがどれでもない場合は処理dが実行されます。 caseがラベルとなりswitchからその場所までジャンプするということですね。 caseはこの例では三個ですがswitchの中に何個でもつくれます。 値によって個別の処理を行いたい場合の方が多いのでたいていは各処理のあとにbreakをつけます。 ここでのbreakはswitchの{}からの脱出です。
switch(変数)
{
case 値1:
	処理1
	break;
case 値2:
	処理2
	break;
case 値3:
	処理3
	break;

default:
	処理d
}
こうすれば値1の時は処理1が値2の時は処理2が…といった具合に個別に処理を行うことになります。 要するに
if(変数==値1) 処理1
if(変数==値2) 処理2
if(変数==値3) 処理3
if(変数!=値1 && 変数!=値2 && 変数!=値3) 処理d
if(変数==値1) 処理1
else if(変数==値2) 処理2
else if(変数==値3) 処理3
else 処理d
のようなifの羅列と同じ意味になります。
printf("ドラクエ%dのサブタイトルは…\n",a);

switch(a)
{
case 1:
	printf("なし\n");
	break;
case 2:
	printf("悪霊の神々\n");
	break;
case 3:
	printf("そして伝説へ…\n");
	break;
case 4:
	printf("導かれし者達\n");
	break;
case 5:
	printf("天空の花嫁\n");
	break;
case 6:
	printf("幻の大地\n");
	break;
case 7:
	printf("エデンの戦士達\n");
	break;

default:
	printf("発売されていません\n");
}
使用例はこんな感じです。 なお、このように使う時はくれぐれもbreakを忘れないように注意してください。