Книга: Язык Си - руководство для начинающих
Объединение операторов if и else
Объединение операторов 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 для организации выбора из нескольких вариантов
- Выбор: конструкция if-else
- Управление объединением содержимого узлов
- 3.3 Конструкция else-if
- Использование операторов if для выбора вариантов
- 4.4.1. What Else Do I Need?
- 6.1.3 IF-THEN-ELSE-ENDIF
- if-else Statement
- #if, #else, #elif, and #endif
- Применение вложенных операторов from
- Порядок выполнения операторов
- ДИРЕКТИВЫ ПРЕПРОЦЕССОРА #define, #include, #undef, #if, #ifdef, #ifndef, #else, #endif