문제

이것은 잘 작동합니다

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의 법칙은 당신에게 정확한 답변을 얻을 수 있지만, 나는 당신이 큰 소리로 읽고 이해할 수있는 코드를 선호합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top