Глава 10. Написание выражений
227
else // По умолчанию. Использовать необязательно. cout « "Ошибка ввода. \п";
Каждое условие проверяется в свою очередь. Оператор, следующий за первым if, условие которого истинно, будет исполнен. Все нижеследующие операторы if будут проигнорированы, невзирая на значения их условий. Если ни одно из проверяемых выражений не возвратит true, то выполнится оператор по умолчанию — следующий за else.
Вложенность операторов if может достигать любой глубины. Следите за тем, чтобы все операторы else соответствовали своим if. Вот пример того, как не надо делать:
include <iostream.h>
int main 0 (
char с;
cout « "Введите строчную букву (от а до z). \п";
cin » с;
if (с <= 'z') if (с < 'а')
cout « "Неверная буква (< а).\п";
else
cout « " Неверная буква (> z).\n";
return 0;
)
Символы ASCII имеют свои значения. Символам нижнего регистра соответствуют последовательные значения от 'а'=97 до 'z'=l22. Программа должна проверять вводимые символы на допустимость. После компиляции и запуска программы из листинга 10.1 она будет отметать все допустимые символы как неверные (считая, что они больше 'z') и вообще не будет реагировать на символы, значение которых действительно больше 'z'. Дело в том, что C++ ставит оператор else (или else if) в соответствие последнему непарному оператору if. Поэтому последний оператор else относится ко второму оператору if, несмотря на то, что, судя по отступам, имелось в виду совершенно другое. В такой ситуации часто выручают скобки. Листинг 10.2 показывает, как, правильно их расставив, можно помочь делу.
include <iostream.h>
int main() {
char с;
8*