制御構文をマスターしよう! (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 ( 条件 ) {switch文は、()の条件の後に、{}で実行する処理を記述します。この中に「case 数字:」というものを用意しておくと、その数字のところにジャンプする、というわけです。このcaseは、必要に応じていくらでも用意できます。
case 値1:
実行する処理
case 値2:
実行する処理
……必要なだけcaseを用意……
default:
実行する処理
}
また、どの数字にも当てはまらない場合には、最後にある「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; }
※関連コンテンツ