else
トロッコのレールを切り替える
if
文では、条件を満たしたときの処理 だけを書けた。でも、if
の 条件を満たさないとき が少々面倒。
bool condition; // false か true になる
if (condition) {
// 満たすとき
}
if (!condition) {
// 満たさないとき
}
この 満たさないとき をそのまま書く構文、else
文がある。
if ( 真偽値の式 ) 式が true のときの文
else 式が false のときの文
以下のように、条件を満たさないときの処理を書ける。
bool condition;
if (condition) {
// 満たすとき
} else {
// 満たさないとき
}
ただ if
文を連ねるのと、 if
- else
にするのとは、2 つの文の どちらかしか実行されない ところが違う。
if
の場合:
条件を満たすかどうか
↓ ↘
↓ 満たすときの処理
↓ ↙
次の処理
if
- else
の場合:
条件を満たすかどうか
↓ ↘
満たさないときの処理|満たすときの処理
↓ ↙
次の処理
上の図の通り、if
だけのときは、条件を満たさないときに何もしない。ひょっとして、ナマケモノのフレンズとか?
else if
else
の直後に if
を書くことで、好きなだけ分岐を増やせる。
int value;
std::cin >> value;
if (value % 15 == 0) {
std::cout << value << " は 3 と 5 の倍数\n";
} else if (value % 3 == 0) {
std::cout << value << " は 3 の倍数\n";
} else if (value % 5 == 0) {
std::cout << value << " は 5 の倍数\n";
} else {
std::cout << value << " は " << value << "\n";
}
各条件は上から順に確かめられて、true
になった条件の、直後の文だけが実行される。
分岐処理を使って多様な応答をするプログラムを作ってみるといいかも。