分岐文
前回<C言語 演算子 【基礎 第8回】>までのところでIF文などの条件式で使用する演算子について述べました。
今回はもう一つの分岐文であるswitch文を取り上げたいと思います。
switch文の構造
switch文は条件式の値によって処理を複数に分けるものとなります。
switch文の書式は以下のようになります。
switch(条件式){
case 定数1:
文1
break;
case 定数2:
文2
break;
複数のcase :
default:
文3
}
switch文とif文との違いは、条件式の結果が整数値にならないといけないことです。
まず式の評価して、その結果の整数値に一致するcase定数式の処理が行われます。
caseの定数式は他のcaseとかぶってはいけません。
caseの内部の処理はbreak文まで処理が行われます。break文に当たるとそこで処理が終わり
switch文が終了します。
break文は必須ではありませんがbreak文がなかった場合、そのまま下のcaseの処理まで実行されることになります。
どのcaseにも当てはまらない場合、最後のdefault文のところの処理が行われることになります。
default文は省略することができます。
コードで確認
Switch文を使用してみましょう。
#include <stdio.h>
int main(void){
int a = 10;
switch( a ){
case 10:
printf(“一つ目の処理をしていますn”);
break;
case 20:
printf(“二つ目の処理をしていますn”);
break;
default:
printf(“defaultの処理をしてますn”);
}
return (0);
}
~~~~実行結果~~~~
一つ目の処理をしています
~~~~~~~~~~~~
先ほどのページのコードを見てみます。
青枠の部分がswitch文になります。switch文の最初のところでは変数aを評価しています。
変数aは値が10になっているので評価の結果最初のcaseのところに処理が飛びます。
このswitch文はIf文を使用して以下のように書き換えが可能です。
#include <stdio.h>
int main(void){
if(a == 10){
printf("一つ目の処理をしています。n");
}else if(a == 20){
printf("二つ目の処理をしていますn");
}else{
printf("defaultの処理をしていますn");
}
return (0);
}
今回のswitch文で7行目の「break」をコメントアウトすると次のような実行結果となります。
#include <stdio.h>
int main(void){
int a = 10;
switch( a ){
case 10:
printf(“一つ目の処理をしていますn”);
case 20:
printf(“二つ目の処理をしていますn”);
break;
default:
printf(“defaultの処理をしてますn”);
}
return (0);
}
~~~~実行結果~~~~
一つ目の処理をしています
二つ目の処理をしています
~~~~~~~~~~~~
「case 10:」のところに処理は飛びますがbreakがないため、そのまま下の処理まで進みます。
そのため2つ表示される形となります。
これもifで書いてみましょう
#include <stdio.h>
int main(void){
if(a == 10){
printf("一つ目の処理をしています。n");
printf("二つ目の処理をしていますn");
}else if(a == 20){
printf("二つ目の処理をしていますn");
}else{
printf("defaultの処理をしていますn");
}
return (0);
}
変数aの値を100に変更すると次のような結果となります。
~~~~実行結果~~~~
defaultの処理をしています
~~~~~~~~~~~~
このようにswitch文はif文でも書き換えが可能となっていますが、switchでは定数となるものでしか分岐ができませんので
if文のような条件式は使用できません。
実践力が身につくC言語講座 連載リンク
競技プログラミングをイメージしたライブラリ活用講座
競技プログラミング風-標準Cライブラリ入門 連載
アルゴリズムをマスターして技術力アップ!
実践アルゴリズム講座 連載
パズルゲームの解析をテーマにしたC++講座
ゲーム解析プログラミング 連載