Wenn Sie Ihren swap all-in-one-Befehl schreiben, verlassen Sie sich auf die Nebenwirkungen des inneren a^=b
-Ausdrucks relativ zum äußeren a^=(...)
-Ausdruck. Ihre Java und C ++ Compiler machen Dinge anders.
Um den xor-Austausch richtig durchzuführen, müssen Sie mindestens zwei Anweisungen verwenden:
%Vor%Der beste Weg, um Variablen zu tauschen, ist jedoch, den banalen Weg mit einer temporären Variable zu gehen und den Compiler den besten Weg wählen zu lassen:
%Vor% Im besten Fall erzeugt der Compiler überhaupt keinen Code für den obigen Austausch und beginnt einfach damit, die Register zu behandeln, die a
und b
enthalten. Sie können keinen komplizierten Xor-Code schreiben, der überhaupt keinen Code schlägt.