博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
交换两个变量的骚操作
阅读量:5873 次
发布时间:2019-06-19

本文共 813 字,大约阅读时间需要 2 分钟。

交换两个变量的值,我们常规做法是申请一个第三方变量,如果要求不能使用第三方变量,该怎么交换两变量呢?

今天介绍两种不依赖第三方变量的交换方法。

1、算术运算法

就是最基本的加减法,这里主要是利用了坐标思想。坐标轴上两个点,通过计算两点之间的距离来完成交换操作。大家可以参考下面这张坐标图来理解。

a = 5b = 8#计算a和b两个点到原点的距离之和#并且赋值给a,这一步a的值已经发生变化a = a+b#使用距离之和减去b到原点的距离#a-b 其实就是a的原值(a到原点的距离),现在赋值给了bb = a-b#再使用距离之和减去b (a到原点的距离)#得到的是b的原值(b到原点的距离),现在赋值给了aa = a-b复制代码

或者

a = 5b = 8#计算ab两点间的距离差,并赋值给aa = b-a#用b到原点的距离减去上一步得到的距离差#即得出a到原点的距离,把a赋值给bb = b-a#再使用a到原点的距离(即现在b的值)加上第一步中的距离差#得到b到原点的距离,把这个距离赋值给aa = b+a复制代码

可能会有同学会问如果 a 或 b 有负数会不会影响结果,其实无论正负数都可以正确完成交换,因为在坐标上,我们计算的是距离,大家可以尝试把变量改成负数试试。

2、异或运算

在上一篇文章中,我们也有讲到使用异或运算找出数组中只出现一次的元素,在这里不再详细解释异或运算的具体操作了,下面直接给出具体实现过程。

a = 5b = 8#a 和 b 异或运算得到一个新值并赋值给 aa = a^b#再把这个新值和b做异或可以得出a的值,并赋值给bb = a^b#上一步中得到的其实是a的原值,再次把第一步中的新值和b做异或#得到b的原值,赋值给aa = a^b复制代码

a 和 b 异或运算得到另一个数 c,当 c 和其中一个值再做异或运算时,能得到另外一个的原值。比如当 c 再和 b 异或运算就能重新得到 a 的值。

转载地址:http://wthnx.baihongyu.com/

你可能感兴趣的文章
学习CodeIgniter框架之旅(二)继承自定义类
查看>>
Y2161 Hibernate第三次考试 2016年8月18日 试卷分析
查看>>
Angular CLI 使用教程指南参考
查看>>
PHP 程序员的技术成长规划
查看>>
access2003删除表记录_学习记录-第十七天-1(李玉婷MySQL基础 第11天)
查看>>
f1 score 代码_特征选择总结之 过滤式特征选择(附代码)——单变量过滤式特征选择方法总结...
查看>>
activty在哪个栈里面_Javascript之调用栈解析
查看>>
天兔(Lepus)监控邮件推送安装配置
查看>>
库存分配
查看>>
Kubernetes 1.9集群使用traefik发布服务
查看>>
如何在C++中增加给JavaScript调用的API
查看>>
大道至减
查看>>
通过Job,Trigger,Scheduler看Quartz2.x作业调度框架
查看>>
VMware上海谈新云基础架构管理平台价值
查看>>
“二子乘舟”的故事很难讲
查看>>
Global Industry Analysts称全球MSS市场在2017年达到112亿美元
查看>>
XCode编译运行出错解决思路,以及再次推荐AppCode
查看>>
京东和天猫的差异究竟在哪里?
查看>>
恐慌:微商造就了“伪创业”迷局
查看>>
学习:Intents和Intent Filters(实例部分)
查看>>