借助中间变量,可以很方便的交换两个变量的值。如果不借助中间变量,同样可以达到交换变量的目的。

数值相加减进行交换

int a = 10;
int b = 12;
a = b - a; //a = 2, b = 12
b = b - a; //a = 2, b = 10
a = b + a;    //a = 12,b = 10

这种方法的原理是,把a和b看做数轴上的点,围绕两点间的距离进行计算。
具体过程:

  • a = b - a计算出了a和b两点之间的距离,并将其保存在a中。
  • b = b - a计算出了a到原点的距离,并将其保存在b中。
  • a = b + a计算出了b到原点的距离,并将其保存在a中。

这种方法的缺点在于只能用于数字类型,字符串类型不可以。而且a+b可能超出int的范围。

位移运算进行交换

int a = 10;
int b = 12;    //a=1010^b=1100;
a = a ^ b;         //a=0110^b=1100;
b = a ^ b;         //a=0110^b=1010;
a = a ^ b;         //a=1100=12;b=1010;

这种方法,原理在于异或运算的特点,通过异或运算能够使得数据中的某些位翻转,其他位不变。
这就意味着任意一个数与任意一个给定的值连续异或两次,值不变。

不利用临时变量,交换两个变量的值

在不借助中间变量的前提下,交换两个变量的值相关推荐

  1. 没有第三个变量的前提下交换两个变量_JavaScript 交换值的方法,你能想到几种?

    早期之前,在 JS 中交换值,我们主要还是使用临时变量.ES6 之后,我们可以使用展开运算符号来交换变量,除了这两种方式,你还能想到哪些呢? 本文主要介绍 交换变量的 10 种方法,请过目 1. 使用 ...

  2. 没有第三个变量的前提下交换两个变量_多变量相关性分析(一个因变量与多个自变量)...

    目录: 前言 偏相关或复相关 意义与用途 分析方法: 1. 样本相关系数矩阵.相关系数检验 2. 复相关分析 3. 决定系数 (RMSE的介绍) 小结 一.前言: 继上一篇文章,继续探讨相关性分析,这 ...

  3. 用html5交换两个变量的值,Python判断两个对象相等的原理 python交换两个变量的值为什么不用中间变量...

    python语言设计一个类代表花,其中含2个对象属性,2class flower: def __init__ (self, name, shape): self.name = name self.sh ...

  4. C++不借助第三变量交换两个变量的值

    C++不借助第三变量交换两个变量的值 源代码: #include<iostream> using namespace std; int main(){int x,y;cout<< ...

  5. python交换两个变量的值_python交换两个变量的值方法

    python交换两个变量的值方法 大部分语言,例如c语言,交换两个变量的值需要使用中间变量. 例如交换a,b 伪代码: tmp = a a = b b = tmp python里面可以实现无临时变量的 ...

  6. 交换两个变量的值,不使用第三个变量的四种法方

    交换两个变量的值,不使用第三个变量的四种法方 通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换.代码如下: int a,b; a=10; b=15; int t; t=a; a= ...

  7. 简单算法实现交换两个变量的值

      谈到算法,好多人都感到脑壳疼,我也不例外.主要是平时工作忙,下班了还有各种进步,基本对算法这一块研究的较少.算法可以称之为前辈智慧的结晶.算法的好坏更多的是从时间复杂度,空间复杂度来考量的.对于我 ...

  8. C语言中的关键字,变量的定义,变量的命名规则,交换两个变量的值,驼峰命名法【 C语言变量名命名法则】

    C语言结构 C语言中的关键字 变量 变量的定义 变量的命名规则 交换两个变量的值 驼峰命名法 C语言结构 上图中我们可以看到最外层是程序,内部是所有的构成,我们从最里面开始说明. 当我们用计算机语言来 ...

  9. Python中有几种办法交换两个变量的值?

    交换两个变量的值方法,这个面试题如果只写一种当然很简单,没什么可以说的.今天这个面试是问大家有几种办法来实现交换两个变量的值 .在没开始看具体答案前,你可以先想想看 . 下面分别来说说这几种方法: 1 ...

最新文章

  1. 阿里HBase的数据管道设施实践与演进
  2. 打印N个数组整体最大的TopK
  3. 微服务架构下,静态数据通用缓存机制!
  4. PW Live 直播 | 北邮博士生纪厚业:异质图神经网络之模型和应用
  5. 看完后完全了解 Vue 2.0 和 Vue 3.0 的区别
  6. L. Coordinate Paper(CCPC 长春)构造
  7. curl 请求日志_kong api网关日志 将请求和响应数据附加到磁盘上的日志文件中
  8. Java 字符串常用操作(比较、查找位置、删除字符、替换字符串、反向输出、是否存在、分割字符串、大小写转换,区域比较、拼接字符串)
  9. 图像语义分割 —利用Deeplab v3+训练VOC2012数据集
  10. 解压文件--linux
  11. 1寸,2的照片多大啊
  12. ssm银行账户管理系统毕业设计(附源码、运行环境)
  13. [科普] 狭义相对论
  14. 两只PNP晶体三极管和四个电阻组成恒流源电路
  15. 超长干货!最全数据指标分析!
  16. 人脸识别之人脸关键点(仅供本人参考)
  17. python爬取歌曲教程_歌曲网站,教你爬取 mp3 和 lyric
  18. Springboot美食汇开放平台8ob70计算机毕业设计-课程设计-期末作业-毕设程序代做
  19. 马斯克被曝摆架子/ 朱晓彤卸任特斯拉中国法人/ 苹果M2Pro首发台积电3nm...今日更多新鲜事在此...
  20. Discuz验证码功能解析

热门文章

  1. Java jdt 编辑_使用JDT转java代码为AST
  2. go html vue,[终极巨坑]golang+vue开发日记【三】,登陆界面制作(二)
  3. Java核心(集合类1-概述、Collection 接口 、List 集合)
  4. PRISM 扩展Mef 的Export属性为ViewExport
  5. Android异常之SIGABRT
  6. 学it中的python怎么样_长安大专网教学历
  7. 微课--使用Python查看本机实时网速(GUI版)
  8. cassandra cql解析
  9. WDM和OTN技术简介
  10. 中兴和华为的面试经历