如何在不使用任何if条件,强制转换或其他变量的情况下交换两个整数变量?

时间:2010-07-16 06:27:14

标签: swap

有两个整数变量。您是否可以在不使用任何if条件的情况下交换这些整数变量,而无需转换,也不使用其他变量?例如:

int a = 10;
int b = 5;
始终

a > b。答案应为a == 5b == 10

6 个答案:

答案 0 :(得分:13)

如果您认为自己聪明不使用第三个变量,那么请进行一些性能测试,您会发现更快的方法是使用第三个int临时存储变量。

无论如何,我用XOR按位运算符解决了这个问题:

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

答案 1 :(得分:11)

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

答案 2 :(得分:4)

这是一个小技巧。

int a = 5;
int b= 10;
a = a+b;
b = a-b; /* Really (a+b) - b i.e. a */
a = a-b; /* Really (a+b) - a i.e. b */

答案 3 :(得分:3)

是的,你可以通过加/减操作来实现。

Example:
num1 = num1 + num2;                
num2 = num1 - num2;                
num1 = num1 - num2;

答案 4 :(得分:3)

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

就是这样!

答案 5 :(得分:3)

简单试试这个

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

就是这样