Шрифт:
В одном операторе можно использовать столько конструкций else if, сколько нужно, что иллюстрируется приведенным ниже фрагментом:
if (score < 1000)
bonus = 0; else if (score < 1500)
bonus = 1; else if (score < 2000)
bonus = 2; else if (score < 2500)
bonus = 4; else bonus = 6;
(Этот фрагмент мог быть взят из игровой программы, где переменная bonus представляет собой количество дополнительных "фотонных бомб" или "питательных гранул", получаемых игроком для следующей партии ).
Объединение операторов if и else
Когда у вас в программе имеется несколько конструкции if и else, каким образом компилятор решает, какому оператору if соответствует какой оператор else? Рассмотрим, например, фрагмент программы:
if(number > 6)
if(number < 12)
printf ("Вы закончили!\n");
else
printf("Простите, вы потеряли ход.\n");
В каком случае фраза "Простите, вы потеряли ход!" будет напечатана? Когда значение переменной number меньше или равно 6, или когда оно больше 12? Другими словами, чему соответствует else: первому if или второму?
Ответ выглядит так: else соответствует второму if, т.е. при выполнении программы результаты будут такими:
Число: Результат:
5 Нет
10 Вы закончили!
15 Простите, вы потеряли ход!
Существует правило, которое гласит, что else соответствует ближайшему if, кроме тех случаев, когда имеются фигурные скобки. Мы сознательно записали этот фрагмент так, как будто else соответствует первому if, но вспомните, что компилятор не обратит внимания на отступы в строках. Если мы действительно хотим чтобы else соответствовал первому if, необходимо данный фрагмент оформить следующим образом:
if(number > 6)
{
if(number < 12) printf (" Вызакончили'\n");
}
else
printf(" Простите, вы потеряли ход!\n");
Теперь результат может выглядеть так
Число: Результат:
5 Простите, вы потеряли ход!
10 Вы закончили!
15 Нет
РИС. 7.3. Структура соответствия if и else.
Резюме: использование операторов if для организации выбора из нескольких вариантов
КЛЮЧЕВЫЕ CЛOBA: if, else
ОБЩИЕ ЗАМЕЧАНИЯ:
В каждой из последующих форм оператором может быть либо простои оператор, либо составной. Выражение "истинно" в обобщенном смысле, если его значение - ненулевая величина.
ФОРМА ЗАПИСИ 1:
if(выражение) оператор
Оператор выполняется, если выражение истинно.
ФОРМА ЗАПИСИ 2:
if(выражение)
оператор1 else
оператор2
Если выражение истинно, выполняется оператор1, в противном случае - оператор2.
ФОРМА ЗАПИСИ 3:
if(выражение1) оператор1
else if(выражение2) оператор2
else оператор3
Если выражение1 истинно, выполняется оператор1. Если выражение1 ложно, но выражение2 истинно, выполняется оператор2. В случае, когда оба выражения ложны, выполняется оператор3.