在编程中,我们经常遇到将a,b的值交换这种情况,下面就说说交换a,b的方法。
1,最常规的就是定义一个变量,通过他交换
int a=1,b=2,t;
t=a;
a=b;
b=t;
对于这种方法我们可以用宏定义,方便下次用到。
#define swap(t,a,b) {int t=a;a=b;b=t;}
main()
{
int a=1,b=2;
swap(t,a,b);
}
2,用相加(+)和异或(^)交换。
首先是相加,这样有个缺点,a+b的值不能超过int。
int a=1,b=2;
a=a+b;
b=a-b;
a=a-b;
然后是异或,因为异或是位运算符,所以这样交换速度比较快。
int a=1,b=2;
a=a^b;
b=a^b;
a=a^b;
(大家可能不知道异或,下一篇日志会简单的说一下异或)
3,swap函数
swap函数在iostream中,所以是c++专用的,纯c用不了。
用法很简单。
#include<ioatream>
main()
{
int a=1,b=2;
swap(a,b);
}
异或:
异或^是位运算符(位运算符进行的是二进制运算)
基本规则就是:0^1=1;0^0=0;1^1=0
一般用到异或的地方就是交换两个数的值。
如:
a=1010,b=1100;
a=a^b=0110;
b=a^b=0110^1100=1010;
a=a^b=0110^1010=1100;