没有第三个变量如何交换?

我必须使用数值交换两个变量而不使用第三个变量。 什么是简单的解决方案?

让我们看一个方法就是使用算术运算符。 考虑2个变量,例如x = 50和y = 70,让我们看看如何在不使用第三个变量的情况下交换两个变量的值,即x = 70和y = 50。 这可以通过使用以下算术运算来完成
x = x + y
y = x – y
x = x – y
这使
•x = x + y给出x = 70 + 50,因此x等于120
•y = x – y给出y = 120 – 70,这使得y的值为50
•x = x – y给出x = 120-50,因此x的值变为70

你可以通过XOR实现它

 int A = ...; int B = ...; A = A ^ B; B = A ^ B; A = A ^ B; 

根据变量的类型,您可以使用Interlocked.Exchange 。 这使用primefaces操作来进行交换。

  int x = 15; int y = 5; x = x + y; y = x - y; x = x - y; 

另一种流行的方式是XOR交换策略。 http://en.wikipedia.org/wiki/XOR_swap_algorithm

这里我们在MIPS汇编程序中有这个。 第一个解决方案是漫长而糟糕的。 第二个XOR更好。

 addi $t0, $0, -5 addi $t1, $0, 15 add $t0, $t0, $t1 sub $t1, $t1, $t0 nor $t1, $0, $t1 addi $t1, $t1, 1 sub $t0, $t0, $t1 #### xor $t0, $t0, $t1 xor $t1, $t0, $t1 xor $t0, $t0, $t1