我的编程学习日志(9)--交换A,B值得方法(相加,异或,swap函数)

分类: Uncategorized , C/C++

2014-09-21

|

1374

|

评论:0

分享:

在编程中,我们经常遇到将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;


 

(大家可能不知道异或,下一篇日志会简单的说一下异或)

 

3swap函数

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;

 



标签:
本文共 0 个回复

发表评论 (对文章评论)

captcha