Warum gibt der folgende Ausdruck in C# einen anderen Wert als in C++ zurück?
Der Ausdruck kann auch geschrieben werden:
Was ich nicht verstehe ist folgendes:
In C++ beginnt die Auswertung auf der rechten Seite und die Zwischenergebnisse werden gespeichert. Wenn die Auswertung beim ersten x links ankommt, hat x einen neuen Wert.
In C# hingegen beginnt die Auswertung auf der linken Seite mit dem Einsetzen des Wertes für das erste x. Die nachfolgenden Ausdrücke werden dann mathematisch korrekt berechnet und als Wert des ersten y von links eingesetzt.
Welches sind denn die Vorteile der Auswertung von links nach rechs, so wie diese in C# gemacht wird? Welche Überlegungen stecken dahinter?
Code:
x ^= y ^= x ^= y;
Code:
x = x ^ y = y ^ x = x ^ y;
In C++ beginnt die Auswertung auf der rechten Seite und die Zwischenergebnisse werden gespeichert. Wenn die Auswertung beim ersten x links ankommt, hat x einen neuen Wert.
In C# hingegen beginnt die Auswertung auf der linken Seite mit dem Einsetzen des Wertes für das erste x. Die nachfolgenden Ausdrücke werden dann mathematisch korrekt berechnet und als Wert des ersten y von links eingesetzt.
Welches sind denn die Vorteile der Auswertung von links nach rechs, so wie diese in C# gemacht wird? Welche Überlegungen stecken dahinter?
Comment