В JavaScript, если я пишу:Почему однострочный обмен XOR не работает в Javascript, но работает на C++?
var a = 6;
var b = 4;
a ^= b ^= a ^= b;
console.log(a, b);
результат будет 0 6.
, но если я пишу:
var a = 6;
var b = 4;
a ^= b;
b ^= a;
a ^= b;
console.log(a, b);
результат будет 4 6. И это правильно.
Почему этот однострочный способ обмена XOR в javascript не работает?
И почему это прекрасно работает на C++?
Я не уверен, что это технически обоснованный C++. – Veedrac
Вы уверены, что единственное утверждение 'a^= b^= a^= b'; эквивалентно * трем * утверждениям 'a^= b; b^= a; a^= b; '? –
В C++ он не определен. Если это работает, это просто совпадение. – molbdnilo