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 になった条件の、直後の文だけが実行される。

分岐処理を使って多様な応答をするプログラムを作ってみるといいかも。