两变量的值交换的几种方法

交换两边的值

int a = 1;
int b = 2; 

求交换a、b两变量的值。
这是一个特别经典且简单的一道题,但是对于一些小白来说,可能也不是那么的简单,
因为我在这里分享给大家的是出了 引入变量法 之外的其他办法

首先最最最最经典以及简单的就是 引入变量法

大家应该都会这种方法,大佬请直接跳过

int a = 1;
int b = 2;
int temp = 0;
	temp = a;	//用临时变量temp来暂时存放变量a的值
	a = b;		//再用 b的值存到a中
	b = temp;	//再讲原来a的值存放到b中

这种方法是用增加变量来实现两变量之间的变换,初接触到编程时,那时候觉得交换两变量的值不就是
a=b,b = a,嘛有什么好麻烦的,这是其实是编程的一个思想,两个盒子每个里面都有一个苹果,将他们的苹果交换,我们萌新理所当然的认为直接换就完了,哪有什么难度,其实我们忽略了我们自己手的作用,我们自己的手就相当于一个临时的暂存变量temp苹果通过放到我们手中然后再到另一个盒子里。

其实对于引入变量法虽然简单易懂,但是对于一个程序来说,交换变量会有很多,如若每一次交换变量都是要添加有个变量的话,会增加服务器的负载。

这样就有几种进阶一点的交换变量的方法

加法交换

int a=1,b=2;
	a=a+b;		//a= 1+2 = 3;
	b=a-b;		//b= 3-1 = 2;
	a=a-b;		//a= 3-2 = 1;

这样加法交换,但是有限制,就是加法是有上限的,即若是

int a =100000000000;
int b =900000000000;

这样 若是两变量相加就会出现越界,那可能有同学家就会提出来用long来储存,但是在真实的项目中,其值本身就是很大的不能保证在不改变a、b变量的类型的基础上解决变量值超限的问题。这时候我们就要进行另一种方法

减法交换

int a=1,b=2;
	a=a-b;		//a= 1-2 = -1;
	b=a+b;		//b= -1+2 = 1;
	a=b-a;		//a= 1-(-1) = 2;

减法解决了上限的问题,但是他还是有着和加法交换一样的问题,就是下限,那么还有什么两全的方法吗?既然我这么问了,那么当然有的,这里就不卖关子了

异或交换

其实异或交换和前面的语句是完全一样的,只要把上边的+和-更改成^就行了

int a=1,b=2;
	a=a^b;		
	b=a^b;		
	a=a^b;		

这个简单理解起来就是明白a^ b ^a=b;知道这一点就可以理解上边的式子了。
至于为什么a^ b ^a=a ,可以看看我的另一篇文章 ,如何理解 a ^ b ^a =a;
这就是我所了解到的几种变量交换的方式,希望能对大家有点帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值