Das Ergebnis des Ausdrucks a == b
ist ein ganzzahliger Wert von 0 oder 1. Der Operator ==
ist linksassoziativ, daher wird der Ausdruck a == b == c
als (a == b) == c
; Das heißt, das Ergebnis von a == b
(0 oder 1) wird mit dem Wert von c verglichen. Also im folgenden Code
Der Ausdruck wird nur dann als wahr ausgewertet, wenn a == b und c == 1 oder a! = b und c == 0.
Die hier vorgestellten Lösungen sind größtenteils korrekt und leicht zu verstehen.
Aber ich würde das bevorzugen Lösung von Sany Huttunen :
zitiert:
%Vor%Hier ist der Grund warum :
Obwohl es in diesem konkreten Fall nicht möglich scheint, hat es mich sofort dazu gebracht, über das Refactoring nachzudenken, wie in:
%Vor%, das in
vereinfacht werden könnte %Vor%Wie erwähnt, ist es jedoch nicht möglich, in diesem konkreten Fall zu vereinfachen, weil
%Vor%folgt dann verschiedenen mathematischen Regeln
%Vor%Das hat mit kommutativen, assoziativen und distributiven Regeln zu tun, wenn ich mich richtig erinnere.
Hier ist eine andere Methode, die Boolesche Logik verwendet
%Vor%Ein guter Compiler kann dies unter Verwendung von bedingten Assembleranweisungen codieren und die Befehlsvorablesewarteschlange nicht unterbrechen.
Ihr Problem ist die falsche Verwendung des Operators ==. Sie müssten etwas wie:
verwenden %Vor%Tags und Links c