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

Stu*_*ent 8 c# variables

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

Stu*_*ent 19

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

  • 回答`x - = y =(x + = y) - y;`并告诉老师这是有史以来最蹩脚的问题之一. (4认同)
  • 这是一个很好的解决方案,但必须小心溢出 (2认同)

Fed*_*ede 13

你可以用XOR实现它

int A = ...;
int B = ...;
A = A ^ B;
B = A ^ B;
A = A ^ B;
Run Code Online (Sandbox Code Playgroud)


Ree*_*sey 6

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