libro
www.tuyano.com
Objective-C初心者のためのC言語超入門

制御構文をマスターしよう! (3/5)

作成:2011-02-01 13:24
更新:2011-02-01 13:24

■たくさんの分岐を行う「switch」文

条件分岐のもう1つの構文は「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文は、このようにして使うのが基本と考えましょう。

※プログラムリストが表示されない場合

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;
}

※関連コンテンツ

「Objective-C初心者のためのC言語超入門」に戻る