今天面试的时候面试官问了这样一道题:如何在不用临时变量的情况下,交换整数a,b的值,现在记录一下解题过程。
#include <iostream>
using namespace std;
int main()
{
int a = 2;
int b = 3;
a = a + b;
b = a - b;
a = a - b;
cout << "a的值:" << a << endl;
cout << "b的值:" << b << endl;
return 0;
}
这种做法在a和b数值较小的情况下是对的,但是a+b如果很大则会溢出,所以也不是最优的解法。最好的方法是使用异或:
{
a ^= b;
b ^= a;
a ^= b;
}
- a,b=b,a