Почему не удается поменять местами значения с помощью XOR при использовании этой составной формы?

Я обнаружил, что этот код меняет местами два числа без использования третьей переменной, используя оператор XOR ^ .

Код:

int i = 25;
int j = 36;
j ^= i;       
i ^= j;
j ^= i;

Console.WriteLine("i:" + i + " j:" + j);

//numbers Swapped correctly
//Output: i:36 j:25

Теперь я изменил приведенный выше код на эквивалентный.

Мой код:

int i = 25;
int j = 36;

j ^= i ^= j ^= i;   // I have changed to this equivalent (???).

Console.WriteLine("i:" + i + " j:" + j);

//Not Swapped correctly            
//Output: i:36 j:0

Теперь я хочу знать, Почему мой код дает неверный результат?

76
задан Kobi 8 April 2011 в 08:34
поделиться