문제
이것은 잘 작동합니다
if ((a >= 40 && a <= 50) || (a >= 60 && a <= 80))
// do something
그것의 반대를 어떻게합니까?
if ((a < 40 && a > 50) || (a < 60 && a > 80))
// do something
코드는 예상대로 작동하지 않습니다. 나는 같은 것을 원한다 그렇지 않은 경우 (조건)
해결책
당신은보고 싶을 수도 있습니다 드 모건의 법칙.
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)
다른 팁
if ((a < 40 || a > 50) && (a < 60 || a > 80))
// do something
제대로 작동하는 방법을 알아내는 것이 좋습니다 (다시 작성하여)
if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))
내가 믿어야한다.
"또는"
if ((a < 40 || a > 50) && (a < 60 || a > 80))
또는, 그렇지 않습니다
if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))
두 번째 예
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))
if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))
당신이 동등한 것을 원한다고 가정합니다
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보다 큰 숫자를 원합니다.
De Morgan의 법칙은 당신에게 정확한 답변을 얻을 수 있지만, 나는 당신이 큰 소리로 읽고 이해할 수있는 코드를 선호합니다.
제휴하지 않습니다 StackOverflow