Почему блок if выполняется?

189
09 мая 2017, 02:29

Есть условие 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 точки с запятой.

Answer 1

Ваши переменные имеют такие значения: 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 (так как оба условия истинны), и тогда одно из двух условий связанных логическим ИЛИ истинно, то есть и все условие истинно.

Подробнее про логическое ИЛИ, подробнее про логическое И.

Answer 2

Ваше условие можно было бы переписать так:

if ((second_digit == 9 ||  second_digit == 0) && four_digit != 0)

(законы дистрибутивности: https://ru.wikipedia.org/wiki/Дистрибутивность). Как мне кажется, так нагляднее видно, что условие выполняется при second_digit = 0 и four_digit = 1.

READ ALSO
C# Хранение конфиденциальных данных

C# Хранение конфиденциальных данных

Здравствуйте! Наткнулся на проблему хранения различных токенов/паролей и тпв открытом репозитории на Github

215
Модель игрока-человека в игре | WPF MVVM

Модель игрока-человека в игре | WPF MVVM

Имеется модель некоторой "настольной" игры (привожу упрощенно), например, крестики-нолики, в ней определен интерфейс игрока:

179
Почему клиент не хочет получать данные?

Почему клиент не хочет получать данные?

Метод Listen запускается в отдельном потоке, должен получать данные с сервера и проигрывать их(это звук)Но вылазит исключение: Необработанное...

188