有两个整数变量。您是否可以在不使用任何if条件的情况下交换这些整数变量,而无需转换,也不使用其他变量?例如:
int a = 10;
int b = 5;
始终 a > b
。答案应为a == 5
和b == 10
答案 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;
就是这样