Frage
Dies funktioniert
if ((a >= 40 && a <= 50) || (a >= 60 && a <= 80))
// do something
Wie mache ich das Gegenteil davon?
if ((a < 40 && a > 50) || (a < 60 && a > 80))
// do something
Der Code funktioniert nicht wie erwartet. Ich möchte so etwas wie , wenn nicht (Bedingung)
Lösung
Sie können unter De Morgan Gesetze .
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)
Andere Tipps
if ((a < 40 || a > 50) && (a < 60 || a > 80))
// do something
Während ich würde empfehlen, herauszufinden, wie man es richtig funktioniert (durch Umschreiben)
if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))
funktionieren soll, glaube ich.
Sie müssen eine "OR"
if ((a < 40 || a > 50) && (a < 60 || a > 80))
Oder ein NOT
if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))
Sie zweites Beispiel
if ((a < 40 && a > 50) || (a < 60 && a > 80))
macht keinen Sinn, als a
nicht beide weniger sein kann als 40 und mehr als 50 (oder weniger als 60 und mehr als 80) zur gleichen Zeit.
So etwas wie
if (!((a < 40 && a > 50) || (a < 60 && a > 80)))
oder
if ((a < 40 || a > 50) && (a < 60 || a > 80))
if (!((a >= 40 && a <= 50) || (a >= 60 && a <= 80)))
Unter der Annahme, dass Sie das Äquivalent von
wollenif ( not ((a >= 40 && a <= 50) || (a >= 60 && a <= 80)) )
dann, wenn Sie über den ursprünglichen Ausdruck denken, sollte es sein
if (a < 40 || (a > 50 && a < 60) || a > 80)
Der erste Ausdruck ist so dass a
eine Zahl von 40 bis 50 sein oder von 60 bis 80 negiert, dass in Englisch und Sie eine Zahl kleiner möge als 40 oder zwischen 50 und 60 oder größer als 80.
De Morgan Gesetze können Sie eine genaue Antwort zu bekommen, aber ich ziehe Code, den Sie laut lesen kann und das Gefühl von machen.