首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程小技巧:互换两个变量的值

今天跟大家分享的小技巧是关于变量互换的,在《无重复随机数》中我们学习如何生成N个不重复的随机数,其中就用到了两个变量的值互换,如果我们需要交换两个int型变量a和b需要在程序里是这样写:

01:int t = a;

02:a = b;

03:b = t;

这是一个标准做法,很多朋友也喜欢这种写法,它引入了一个临时变量,用于存放a的值,然后把b的值赋值给a,再把t的值赋值给b。于是就完成了两个变量的值交换功能。

下面我们提出一个问题:在不引入临时变量的情况下如何实现a、b两个变量的互换功能?

我们来看看下面的程序:

01:a += b;

02:b = a - b;

03:a -= b;

先将a赋值成a与b的和,然后在这个基础上减去b的值,就得到了原来a的值,把这个值赋值给b,于是b就成为了a原来的值,再用a与b的和减去b(a原来的值)就得到了b原来的值,把它赋值给a。这样就完成了a与b的值互换问题。

有细心的朋友会问:在a = a + b;时如果a、b的和超过了a的存储空间会怎么样?大家可以亲自动手试一试,结果还是没有问题的,请参见《补码原理》并思考为原因。

使变量a、b互换,还有其它的办法,比如使用“异或”运算,其原理与上面用加减法一样,只不过运算法则变为了“异或”,我们再来看看程序实现:

01:a ^= b;

02:b ^= a;

03:a ^= b;

这样做的结果与上面两种办法得到的结果是一样的。希望大家在遇到问题时多思考、多动脑,培养自己灵活的思维方式。

今天的小技巧你学会了吗?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180121G05Y2D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券