交换两个数字而不使用另一个变量

时间:2015-01-29 04:43:33

标签: c#

在不使用临时变量的情况下交换两个变量 如果

int a=4; 
int b=3;

我需要交换这些变量并获得输出  a = 3,b = 4 不使用C#中的另一个变量

5 个答案:

答案 0 :(得分:7)

使用 Interlocked.Exchange ()

int a = 4;
int b = 3;

b = Interlocked.Exchange(ref a, b);

告诉我更多

来自MSDN:

  

将32位有符号整数设置为指定值作为原子操作,然后返回原始值

编辑:关于上面的Esoteric精美链接(谢谢),double甚至还有一个 Interlocked.Exchange ()也可以提供帮助。

答案 1 :(得分:4)

实际上有两种方法。

以下内容被视为obfuscated swap

a ^= b;
b ^= a;
a ^= b;

答案 2 :(得分:4)

使用以下概念

int a=4 ;
int b=3 ;

a=a+b ;  //  a=7
b=a-b ;  //  b=7-3=4
a=a-b ;  //  c=7-4=3

答案 3 :(得分:1)

a = a + b;
b = a - b;
a = a - b;

使用任何语言都一样。

答案 4 :(得分:1)

使用加法和减法

a = a + b;
b = a - b;
a = a - b;

使用xor运算符

a = a ^ b;
b = a ^ b;
a = a ^ b;

http://chris-taylor.github.io/blog/2013/02/25/xor-trick/