В цепочке условий сверху стоит проверка amount > 100, а ниже — amount > 200 и заключительная ветка. Для значения 250 нужно отдельное поведение, отличающееся от значений в диапазоне от 100 до 200. Что не так с таким порядком проверок?

AСработает первая проверка amount > 100, и в эту же ветку попадут значения, для которых хотели отдельный сегмент свыше 200
BСработает проверка amount > 200, потому что интерпретатор выбирает наиболее специфичное условие из всей цепочки
CСработает заключительная ветка else, потому что обе проверки конфликтуют между собой и интерпретатор пропускает их обе
DЛогика будет работать неверно: для значения 250 нужно поставить проверку amount > 200 выше, чтобы значения свыше 200 попали в свою ветку
Правильный ответ. Срабатывает первая истинная проверка, поэтому более узкое условие должно стоять выше более широкого.

Разбор

Условия проверяются сверху вниз, и срабатывает первая истинная проверка. При значении 250 условие amount > 100 уже истинно, поэтому управление никогда не дойдёт до проверки amount > 200, и обе группы значений сольются в одну ветку. Чтобы значения свыше 200 попадали в отдельный сегмент, более специфичную проверку amount > 200 нужно ставить выше, чем amount > 100. Заключительная ветка в этой ситуации не срабатывает, потому что одна из верхних проверок уже истинна.

Можно заниматься бесплатно

Готовим вопросы…

Три вопроса по теме этой страницы, с объяснениями.

Продолжить в браузере

Ещё вопросы по теме «Циклы и условия»