Книга: Язык Си - руководство для начинающих

Объединение операторов 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.

Оглавление книги


Генерация: 1.656. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз