Есть условие if:
if (second_digit == 9 && four_digit != 0 || second_digit == 0 && four_digit != 0)
и Я не могу понять почему оно выполняется!!!?
Смотря под отладчиком в Visual Studio - в момент, когда выполняется этот блок, переменные second_digit и four_digit = 0 и 1 соответственно, т.е даже первая часть условия if -
second_digit == 9 && four_digit != 0
- не должна выполнятся, т.к second_digit != 9
Подскажите пожалуйста. P.S и нет, это не дубликат вопроса: Выполняется блок if(){} при значении логического условия равном false! - т.к у меня после блока if точки с запятой.
Ваши переменные имеют такие значения: second_digit = 0 и four_digit = 1.
То есть условие second_digit == 0 возвращает True и four_digit != 0 возвращает True. Так как исходное условие выглядит следующим образом (с расставленными приоритетами):
if ((second_digit == 9 && four_digit != 0) || (second_digit == 0 && four_digit != 0))
Вторая группа условий возвращает True (так как оба условия истинны), и тогда одно из двух условий связанных логическим ИЛИ истинно, то есть и все условие истинно.
Подробнее про логическое ИЛИ, подробнее про логическое И.
Ваше условие можно было бы переписать так:
if ((second_digit == 9 || second_digit == 0) && four_digit != 0)
(законы дистрибутивности: https://ru.wikipedia.org/wiki/Дистрибутивность).
Как мне кажется, так нагляднее видно, что условие выполняется при second_digit = 0 и four_digit = 1.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники