Почему замена целочисленной переменной с помощью XOR не работает в одной строке?

Я хочу поменять местами значение двух целочисленных переменных в java с помощью оператора XOR.

Это мой код:

int i = 24;
int j = 17;

i ^= j;
j ^= i;
i ^= j;

System.out.println("i : " + i + "\t j : " + j);

Он будет работать нормально, но следующий эквивалентный код не работает:

int i = 24;
int j = 17;

i ^= j ^= i ^= j;

System.out.println("i : " + i + "\t j : " + j);

Вывод такой:

i : 0    j : 24

Первая переменная равна нулю! Что не так с Явой?

11
задан S.L. Barth - Reinstate Monica 4 July 2012 в 08:43
поделиться