条件分岐文は条件が真の場合のみ、ある範囲の処理を実行されます。条件分岐文には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