给定a = 6, b = 13
,(例如)
如何更改b = 6. a = 13
没有第三个整数?
我需要算法或代码。 有很多方法可以做到这一点,但我需要最短的方法。
答案 0 :(得分:3)
我认为这是最短的
a = a + b;
b = a - b;
a = a - b;
答案 1 :(得分:2)
我认为这是最短的
Interlocked.CompareExchange(ref a, b, b = a);
答案 2 :(得分:1)
你应该记住,这个交换只适用于a + b <= int.Max
的情况,所以在生产中我会一直使用临时变量。
int a = 6, b = 13;
a = b + (b = a) - b;
https://dotnetfiddle.net/uNsA5n
这也可以,但性能没有可测量的差异。
a = b ^ (b = a) ^ b;
答案 3 :(得分:1)
对于迟到的回复感到抱歉,您可以在多种操作组合中执行相同操作,将aValue, bValue
设为两个值,然后您可以使用以下方式执行交换:
使用+和 -
aValue = aValue + bValue;
bValue = aValue - bValue;
aValue = aValue - bValue;
使用*和/
aValue = aValue * bValue;
bValue = aValue / bValue;
aValue = aValue / bValue;
使用^
aValue = aValue ^ bValue;
bValue = aValue ^ bValue;
aValue = aValue ^ bValue;
结帐Fiddle以查看正在运行的示例
答案 4 :(得分:-1)
你可以用基本的求和和减法来做到这一点
a=a+b; b=a-b; a=a-b;