方法一:
num1=num1+num2;
num2=num1-num2;
num1=num1-num2;
方法二:
num1=num1^num2;
num2=num1^num2; //现在num2==原来的num1了
num1=num2^num1; //现在num1==原来的num2了
异或(^):
1^0 = 1, 0^1=1, 1^1=0, 0^0=0;
这种方法的原理:任何一个数,对同一个数异或两次,那这个数就变回原来的数
即 a^b^b = a
a^b^a = b
举个例子:
a=1011 , b=10
a = a^b = 1011^10 = 1001
b = a^b = 1001^10 = 1011 // 1011^10^10 = 1011
a = a^b = 1001^1011 = 10 // 1011^10^1011 = 10
#include <iostream>
using namespace std;
int main()
{
int a,b;
while(cin>>a>>b){
a = a+b;
b = a-b;
a = a-b;
cout << a<<" "<<b<<endl;
a = a^b;
b = a^b;
a = a^b;
cout << a<<" "<<b<<endl;
a^=b^=a^=b;
cout << a<<" "<<b<<endl;
}
return 0;
}
输入输出:
548653 12313215
12313215 548653
548653 12313215
12313215 548653
3 7
7 3
3 7
7 3
参考:http://topic.youkuaiyun.com/t/20020211/11/527938.html