条件分岐

条件分岐文は条件が真の場合のみ、ある範囲の処理を実行されます。条件分岐文にはif文とswitch文があります。

if文

if文は条件が真の場合に{}で囲まれた処理を実行する文です。書式は以下のとおりです。

if(条件式){
	処理;
}

また、if文に続いてelse ifと書くとif文の条件が偽の場合にelse if文の条件式が判定されます。else if文はいくつでも記述することができます。書式は以下のとおりです。

if(条件式){
	処理;
}else if(条件式){
	処理;
}else if(条件式){
	処理;
}

更に、if文またはelse if文に続いてelseと書くと全てのif文else if文の条件が偽の場合にelse文の{}で囲まれた範囲の処理が実行されます。書式は以下のとおりです。

if(条件式){
	処理;
}else{
	処理;
}

if(条件式){
	処理;
}else if(条件式){
	処理;
}else{
	処理;
}

実際に書いて動かしてみましょう。

#include <stdio.h>

int main(void)
{
	int i = 10;

	if(i == 10){
		printf("Route1\n");
	}

	if(i == 0){
		printf("Route2-1\n");
	}else if(i == 10){
		printf("Route2-2\n");
	}

	if(i == 0){
		printf("Route3-1\n");
	}else{
		printf("Route3-2\n");
	}

	if(i == 0){
		printf("Route4-1\n");
	}else if(i == 1){
		printf("Route4-2\n");
	}else if(i == 10){
		printf("Route4-3\n");
	}else{
		printf("Route4-4\n");
	}

	return 0;
}

実行結果:

Route1
Route2-2
Route3-2
Route4-3

switch文

switch文は指定した変数の値によって分岐します。値はcase文で指定します。case文はラベルとして扱われるので文の最後にコロン(:)を付けます。書式は以下のとおりです。

switch(分岐値){
case 0:
	処理A;
	break;
case 1:
	処理B;
	break;
default:
	処理C;
	break;
}

分岐値にはほとんどの場合、変数を指定します。分岐値が0の場合はcase 0に分岐します。そして、break文によってswitch文の終端にジャンプします。break文が記述されていない場合、処理を抜けずに次のcase文を実行します。breakは忘れずに書きましょう。意図的にbreakしない場合はコメントで
// Through
と書いておくと良いでしょう。

また、どのcase文にも分岐しない場合、default文に分岐します。default文は省略可能です。

実際に書いて動かしてみましょう。

#include <stdio.h>

int main(void)
{
	int i = 10;

	switch(i){
	case 0:
		printf("Route1-1\n");
		break;
	case 10:
		printf("Route1-2\n");
		break;
	default:
		printf("Route1-3\n");
		break;
	}

	switch (i) {
	case 0:
		printf("Route2-1\n");
		break;
	case 10:
		printf("Route2-2\n");
		// Through
	default:
		printf("Route2-3\n");
		break;
	}

	return 0;
}

実行結果:

Route1-2
Route2-2
Route2-3

<<前へ(繰り返し)

>>次へ(関数)