Использование булевых операторов - PullRequest
0 голосов
/ 15 сентября 2009

отлично работает

if ((a >= 40 && a <= 50) || (a >= 60 && a <= 80))
// do something

Как мне сделать обратное?

if ((a < 40 && a > 50) || (a < 60 && a > 80))
// do something

Код не работает должным образом. Я хочу что-то вроде , если нет (условие)

Ответы [ 7 ]

11 голосов
/ 15 сентября 2009

Возможно, вы захотите взглянуть на законы де Моргана .

1. !((a >= 40 && a <= 50) || (a >= 60 && a <= 80))

2. (!(a >= 40 && a <= 50) && !(a >= 60 && a <= 80))

3. ((!(a >= 40) || !(a <= 50)) && (!(a >= 60) || !(a <= 80))

4. ((a < 40 || a > 50) && (a < 60 || a > 80))


or in other words: (a < 40 || (50 < a && a < 60) || 80 < a)
4 голосов
/ 15 сентября 2009
if ((a < 40 || a > 50) && (a < 60 || a > 80))
// do something
1 голос
/ 15 сентября 2009

Хотя я бы порекомендовал выяснить, как заставить его работать правильно (переписав его)

if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))

должно работать, я верю.

0 голосов
/ 15 сентября 2009
if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))
0 голосов
/ 15 сентября 2009

Предполагая, что вы хотите эквивалент

if ( not ((a >= 40 && a <= 50) || (a >= 60 && a <= 80)) )

тогда, если вы думаете об исходном выражении, оно должно быть

if (a < 40 || (a > 50 && a < 60) || a > 80)

Первое выражение позволяет a быть числом от 40 до 50 или от 60 до 80. Отмените это на английском, и вам нужно число меньше 40 или от 50 до 60 или больше чем 80.

Законы де Моргана могут дать вам точный ответ, но я предпочитаю код, который вы можете прочитать вслух и понять.

0 голосов
/ 15 сентября 2009

Второй пример

if ((a < 40 && a > 50) || (a < 60 && a > 80))

не имеет смысла, так как a не может быть одновременно меньше 40 и больше 50 (или меньше 60 и больше 80).

Что-то вроде

if (!((a < 40 && a > 50) || (a < 60 && a > 80)))

или

if ((a < 40 || a > 50) && (a < 60 || a > 80))
0 голосов
/ 15 сентября 2009

Вам нужно "ИЛИ"

if ((a < 40 || a > 50) && (a < 60 || a > 80))

Или НЕ

if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...