6

有两个整数变量。您可以在不使用任何 if 条件、不强制转换和不使用其他变量的情况下交换这些整数变量吗?例如:

int a = 10;
int b = 5;

a > b总是。答案应该是a == 5b == 10

4

6 回答 6

14

如果您认为不使用 3rd 变量很聪明,那么进行一些性能测试,您会发现更快的方法是使用 3rdint临时存储变量。

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

a ^= b;
b ^= a;
a ^= b;
于 2010-07-16T06:35:04.277 回答
11
a=a+b;
b=a-b;
a=a-b;
于 2010-07-16T06:31:18.170 回答
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 */
于 2010-07-16T06:31:56.977 回答
3

是的,您可以通过使用加/减操作来做到这一点。

Example:
num1 = num1 + num2;                
num2 = num1 - num2;                
num1 = num1 - num2;
于 2010-07-16T06:28:30.277 回答
3
a=a+b
b=a-b
a=a-b

就是这样!

于 2010-07-16T06:33:04.620 回答
3

简单试试这个

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

就是这样

于 2010-07-16T06:37:47.983 回答