阿里巴巴面試考過這題,mark一下
方法一:算術運算
int a,b;
a=10;b=12;
a=b-a; //a=2;b=12
b=b-a; //a=2;b=10
a=b+a; //a=10;b=10
缺點::是隻能用於數字類型,字符串之類的就不可以了。a+b有可能溢出(超出int的範圍),溢出是相對的, +了溢出了,-回來不就好了,所以溢出不溢出沒關係,就是不安全。
方法二:位運算
int a=10,b=12; //a=1010^b=1100;
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;
利用異或運算兩次值不變的性質!
方法三:棧運算
我覺得不好……
int exchange(int x,int y)
{
stack S;
push(S,x);
push(S,y);
x=pop(S);
y=pop(S);
}