Кент Рейсдорф. BORLAND C++BUILDER. Раздел 1

Кент Рейсдорф. BORLAND C++BUILDER. Страница 43

Обратите внимание, что для case 20 и case 25 соответствующие операторы отсутствуют. Если выражение amountOverSpeedLimit равно 20 или 25, эти две секции проходятся насквозь и выполняется следующий за ними блок кода. В результате для значений 20, 25 и 30 будет выполнен один и тот же код.

Не забывайте об операторах break! Без них работа switch будет продолжаться даже после обнаружения совпадения и может привести к выполнению блока, который по вашему замыслу не должен был выполняться. Впрочем, иногда это соответствует логике работы вашего switch, но чаще всего нет.

Обратите внимание, что последний оператор case не имеет своего опера­тора break. Поскольку это последняя строка switch, нет смысла включать в нее break.

Как я уже говорил, вы можете использовать switch вместо нескольких расположенных подряд if. Это несколько облегчит для других понимание вашей программы.

■ Оператор switch позволяет выполнять различные блоки кода в зависи­мости от значения выражения ехрг. Блок statements l выполняется, когда ехрг равно value_l, блок statements_2 — когда ехрг равно value_2, и т.д. до блока statements_n, когда ехрг равно value_n. Если ехрг не равно ни одному из значений value_l ... value_n, выполняется блок dflt_state- ments. Операторы break не являются обязательными.

Области видимости

Включение оператора default не обязательно. Вы можете написать switch и без него:

Термин область видимости (scope) обозначает ту часть программы, в пределах которой возможен доступ к данной переменной. Большинство пере­менных являются локальными. Это означает, что доступ к ним возможен только в пределах того блока, в котором они объявлены. Взгляните на про­грамму, приведенную в листинге 2.3.

Листинг 2.3. SCOPE.CPP

Web-дизайн (с) 2010 All rights reserved