Казалось бы данная задача не решаема, в случае когда отсутствует третья переменная. Обычно можно было бы присвоить промежуточное значение в третью переменную и две другие обменять местами. Ну, а продублированное значение забрать опять таки из третьем переменой, давайте рассмотрим пример.
a = 1
b = 2
c = a
a = b
b = c
На самом же деле все обстоит иначе, существует несколько методов обмена значений без промежуточных переменных. Давайте их рассмотрим:
Арифметические методы сложения/вычитания и деления/умножения
Операции сложения/вычитания:
a = a + b
b = a - b
a = a - b
Операции деления/умножения:
a = a * b
b = a / b
a = a / b
Главным недостатком такой замены значений является большое количество операций. Также операции деления и умножения являются более «дорогостоящими».
Побитные операции
a = a xor b
b = b xor a
a = a xor b