制御構文をマスターしよう! (3/5)
作成:2011-02-01 13:24
更新:2011-02-01 13:24
更新:2011-02-01 13:24
■たくさんの分岐を行う「switch」文
条件分岐のもう1つの構文は「switch」文というものです。これは、条件となる値をチェックし、その値がいくつかによって特定の場所にジャンプする、という働きを持ちます。以下に、その基本的な形を書いておきます。
◯switch文の基本形
また、どの数字にも当てはまらない場合には、最後にある「default:」というところにジャンプします。このdefault:は省略することもでき、その場合は当てはまるcaseがないと何もしないで構文を抜けます。
このswitch文を使うとき注意しなければならないことは「switchは、ただ指定のcaseにジャンプするだけで、そこから抜け出す処理まではない」という点でしょう。switchでは、()に指定した値と同じ値のcaseにジャンプし、そこにある処理を実行します。そして――それだけです。その部分の処理を実行し終わったら構文を抜ける、わけではありません。
下のリスト欄に、まずいswitch文の例をあげておきました。これを実行すると、「12 gatsu is Winter.12 gatsu is Spring.12 gatsu is Summer.12 gatsu is fall.」と全部表示されてしまいます。最初にcase 0:にジャンプし、そこにある処理を実行した後も、その下にあるcase 1:、case 2:、case 3:をずっと実行し続けてしまうからです。
そこで、「必要な処理を実行したら、構文を抜ける」というようにしないといけません。それを行うのが「break」というキーワードです。下のリストにある、正しいswitch文の例を見てください。それぞれのcaseにあるprintfを実行した後、breakで構文を抜けていることがわかります。switch文は、このようにして使うのが基本と考えましょう。
◯switch文の基本形
switch ( 条件 ) {
case 値1:
実行する処理
case 値2:
実行する処理
……必要なだけcaseを用意……
default:
実行する処理
}switch文は、()の条件の後に、{}で実行する処理を記述します。この中に「case 数字:」というものを用意しておくと、その数字のところにジャンプする、というわけです。このcaseは、必要に応じていくらでも用意できます。また、どの数字にも当てはまらない場合には、最後にある「default:」というところにジャンプします。このdefault:は省略することもでき、その場合は当てはまるcaseがないと何もしないで構文を抜けます。
このswitch文を使うとき注意しなければならないことは「switchは、ただ指定のcaseにジャンプするだけで、そこから抜け出す処理まではない」という点でしょう。switchでは、()に指定した値と同じ値のcaseにジャンプし、そこにある処理を実行します。そして――それだけです。その部分の処理を実行し終わったら構文を抜ける、わけではありません。
下のリスト欄に、まずいswitch文の例をあげておきました。これを実行すると、「12 gatsu is Winter.12 gatsu is Spring.12 gatsu is Summer.12 gatsu is fall.」と全部表示されてしまいます。最初にcase 0:にジャンプし、そこにある処理を実行した後も、その下にあるcase 1:、case 2:、case 3:をずっと実行し続けてしまうからです。
そこで、「必要な処理を実行したら、構文を抜ける」というようにしないといけません。それを行うのが「break」というキーワードです。下のリストにある、正しいswitch文の例を見てください。それぞれのcaseにあるprintfを実行した後、breakで構文を抜けていることがわかります。switch文は、このようにして使うのが基本と考えましょう。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
※まずいswitch文の例
#include <stdio.h>
int main (int argc, const char * argv[]) {
int n = 12;
switch ((n % 12) / 3) {
case 0:
printf("%i gatsu is Winter.",n);
case 1:
printf("%i gatsu is Spring.",n);
case 2:
printf("%i gatsu is Summer.",n);
case 3:
printf("%i gatsu is fall.",n);
}
return 0;
}
※正しいswitch文の例
#include <stdio.h>
int main (int argc, const char * argv[]) {
int n = 12;
switch ((n % 12) / 3) {
case 0:
printf("%i gatsu is Winter.",n);
break;
case 1:
printf("%i gatsu is Spring.",n);
break;
case 2:
printf("%i gatsu is Summer.",n);
break;
case 3:
printf("%i gatsu is fall.",n);
}
return 0;
}
※関連コンテンツ