「条件文(if~else文)」では、条件が成立した場合(真の場合)と、条件が不成立した場合(偽の場合)に処理を分けることができました。
ただ、これでは、2パターンの分岐しか行えません。
そこで、より多くの条件を判断して、それぞれ異なる処理を行いたい場合に用いるのが、if~else if~else文です。
例えば、テストの点数が90点以上の場合の処理、90点未満だが80点以上の場合、80点未満だが70点以上の場合、その他の場合、といったように、複数の条件に応じて処理を分けることができます。
if~else if~else文の仕組み
if~else if~else文の構文は、次の通りです。
if( 条件1 ) {
文1;
}
else if ( 条件2 ) {
文2;
}
else {
文3;
}この構文では、条件1が成立した場合は、文1の処理を行い、文2、文3の処理は行いません。
また、その時点で条件2の判定も行われません。
条件1が不成立した場合は、条件2の判定を行います。
条件2が成立した場合、文2の処理を行い、文3の処理は行いません。
条件1も条件2も不成立した場合は、else文の中の文3の処理が行われます。
このように、if~else if~else文を使うと、複数の条件に応じて処理を分けることができます。
次のソースコードを記述して、いろんな整数値を入力して試してみてください。
入力した点数に応じて、3種類のメッセージが出力されることを確認できます。
#include <stdio.h>
int main(void)
{
int score;
printf("テストの点を入力してください。\n");
scanf("%d", &score);
if( score > 90 ) {
printf("たいへんよくできました!\n");
}
else if( score >80 ) {
printf("よくできました!\n");
}
else {
printf("がんばりましょう!\n");
}
return 0;
}このプログラムでは、if → else if → else の順に条件を判定し、
最初に当てはまった条件のメッセージだけが表示されます。
実際にいくつかの値(たとえば 95、85、60 など)を入力して、結果の違いを確かめてみましょう。
まとめ
- if~else if~else文を用いることで、より多くの条件を判断して、それぞれ異なる処理を行うことができる。