#include <iostream>
using namespace std;
int main()
{
int a, b;
cout << "Введите два числа: ";
cin >> a >> b;
if(b) cout << a/b << '\n';
else cout << "На нуль делить нельзя.\n";
return 0;
}
Обратите внимание на то, что значение переменной b (делимое) сравнивается с нулем с помощью инструкции if(b), а не инструкции if(b!=0). Дело в том, что, если значение b равно нулю, условное выражение, управляющее инструкцией if, оценивается как ЛОЖЬ, что приводит к выполнению else-ветви. В противном случае (если b содержит ненулевое значение) условие оценивается как ИСТИНА, и деление благополучно выполняется. Нет никакой необходимости использовать следующую if-инструкцию, которая к тому же не свидетельствует о хорошем стиле программирования на C++.
if(b != 0) cout << а/b << '\n';
Эта форма if-инструкции считается устаревшей и потенциально неэффективной.
Вложенные if-инструкции образуются в том случае, если в качестве элемента инструкция (см. полный формат записи) используется другая if-инструкция. Вложенные if-инструкции очень популярны в программировании. Главное здесь — помнить, что else-инструкция всегда относится к ближайшей if-инструкции, которая находится внутри того же программного блока, но еще не связана ни с какой другой else-инструкцией. Вот пример.
if(i) {
if(j) statement1;
if(k) statement2; // Эта if-инструкция
else statement3; // связана с этой else-инструкцией.
}
else statement4; // Эта else-инструкция связана с if(i).
Как утверждается в комментариях, последняя else-инструкция не связана с инструкцией if(j), поскольку они не находятся в одном блоке (несмотря на то, что эта if-инструкция — ближайшая, которая не имеет при себе "else-пары"). Внутренняя else-инструкция связана с инструкцией if(k), поскольку она — ближайшая и находится внутри того же блока.
Вложенная if-инструкция— это инструкция, которая используется в качестве элемента инструкция любой другой if- или elsе-инструкции.
Язык C++ позволяет 256 уровней вложения, но на практике редко приходится вкладывать if-инструкции на "такую глубину". продемонстрируем использование вложенных инструкций с помощью очередного усовершенствования программы "Угадай магическое число" (здесь игрок получает реакцию программы на неправильный ответ).
// Программа "Угадай магическое число":
// 2-е усовершенствование.
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int magic; // магическое число
int guess; // вариант пользователя
magic = rand(); // Получаем случайное число.
cout << "Введите свой вариант магического числа: ";
cin >> guess;
if(guess == magic) {
cout << " ** Правильно **\n";
cout << magic << " и есть то самое магическое число.\n";
}
else {
cout << "...Очень жаль, но вы ошиблись.";
if(guess > magic) cout <<"Ваш вариант превышает магическое число.\n";
else cout << " Ваш вариант меньше магического числа.\n";
}
return 0;
}
Очень распространенной в программировании конструкцией, в основе которой лежит вложенная if-инструкция, является "лестница" if-else-if. Ее можно представить в следующем виде.
if(условие)
инструкция;
else if(условие)
инструкция;
else if(условие)
инструкция;
.
.
.
else
инструкция;