В то время как оператор if позволяет программе принять решение о том, должен ли выполняться определенный оператор или блок, if else позволяет решить, какой из двух операторов или блоков следует выполнить. Это незаменимое средство для программирования альтернативных действий. Оператор C++ if else моделирует простой английский язык, как в предложении “If you have a Captain Cookie card, you get a Cookie Plus Plus, else you just get a Cookie d’Ordinaire” (непереводимая игра слов с применением местных идиоматических выражений — прим. перев.).
Оператор if else имеет следующую общую форму:
if (проверочное-условие) оператор1
else
оператор2
Если проверочное-условие равно true или не ноль, то программа выполняет оператор1 и пропускает оператор2. В противном случае, когда проверочное-условие равно false или ноль, программа выполняет оператор2 и пропускает оператор1. Потому следующий фрагмент кода печатает первое сообщение, если answer равно 1492, и второе — в противном случае:
if (answer == 1492)
cout << "That's right!\n";
else
cout << "You'd better review Chapter 1 again.\n";
Каждый оператор может быть либо отдельным оператором, либо блоком операторов, заключенным в фигурные скобки (рис.). Вся конструкция if else трактуется синтаксически как одиночный оператор.
Например, предположим, что вы хотите преобразовать входящий текст, шифруя буквы и оставляя нетронутыми символы новой строки. Это значит, что нужно заставить программу выполнять одно действие для символов новой строки и другое — для всех прочих символов. Как показано в листинге ниже, оператор if else позволяет легко решить эту задачу.
// использование оператора if else
#include <iostream>
int main()
{
char ch;
using namespace std;
cout << "Type, and I shall repeat.\n";
cin.get(ch);
while (ch != '.')
{
if (ch == '\n')
cout << ch;
else
cout << ++ch;
cin.get(ch);
}
// попробуйте ch + 1 вместо ++ch
cout << "\nPlease excuse the slight confusion.\n";
getchar();
getchar();
return 0;
}
Обратите внимание, что в одном из комментариев в листинге предлагается заменить ++ch на ch + 1, чтобы увидеть интересный эффект. Можете ли вы предположить, что произойдет? Если нет, сделайте это и посмотрите, что получится, после чего попробуйте объяснить. (Подсказка: это касается того, как cout обрабатывает разные типы данных.)