在编程中,我们经常遇到将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;
发表评论 (对文章评论)