有两个参数 a=10 , b=15;
在不引用第3参数的条件下将 a,b的值互换
不考虑溢出有如下方法:
(1)
a = a + b; //a=25,b=15
b = a - b; //a=25,b=10
a = a - b; //a=15,b=10
同样:
b = b - a; //a=10 b=10
a = a + b; //a=20 b=10
b = 2 * b; //a=20 b=20
(2)
b=a-(a=b)*0
或者
b=a+(a=b)*0
或者
a=b+(b=a)*0;
(3)
a=a*b;
b=a/b;
a=a/b;
考虑溢出有如下方法:
(4)
a=a^b;
b=a^b;
a=a^b;
精简点的:
a^=b^(b^=a^b);
或者
a^=b^=a^=b;
(5)
还有汇编利用堆栈的:
push a
push b
pop b
pop a
评论