Глава 10. Написание выражений

227

else // По умолчанию. Использовать необязательно. cout « "Ошибка ввода. \п";

Каждое условие проверяется в свою очередь. Оператор, следующий за первым if, условие которого истинно, будет исполнен. Все нижеследующие операторы if будут проигнорированы, невзирая на значения их условий. Если ни одно из проверяемых выражений не возвратит true, то выполнится оператор по умолчанию — следующий за else.

Вложенность операторов if может достигать любой глубины. Следите за тем, чтобы все операторы else соответствовали своим if. Вот пример того, как не надо делать:

h02271.jpg

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 показывает, как, правильно их расставив, можно помочь делу.

h02272.jpg

include <iostream.h>

int main() {

char с;

8*