概要
本文主要描述,如何不使用中间值,将两个变量的值进行交换。
一、普通做法
var a = 1, b = 2, tmp; tmp = a; a = b; b = tmp;
普通的做法就是声明多一个临时变量tmp,进行数据交换过程中的缓存。这样的做法直观,易懂。但是,会增加内存的使用。
二、算术运算
var a = 1, b = 2; a = a + b; // a = 3, b = 2 b = a - b; // a = 3, b = 1 a = a - b; // a = 2, b = 1
通过算术运算过程中的技巧,可以巧妙地将两个值进行互换。但是,有个缺点就是变量数据溢出。因为JavaScript能存储数字的精度范围是 -253 到 253。所以,加法运算,会存在溢出的问题。
三、异或运算
var a = 1, // 二进制:0001 b = 2; // 二进制:0010 a = a ^ b; // 计算结果:a = 0011, b = 0010 b = a ^ b; // 计算结果:a = 0011, b = 0001 a = a ^ b; // 计算结果:a = 0010, b = 0001
本题巧用位运算的技巧,利用 a ^ b ^ b == a 的特点,进行数值交换,避免了使用算术运算带来的弊端,不会发生溢出问题。
四、ES6的解构
let a = 1, b = 2; [a, b] = [b, a];
用解构的语法特性,一次性解决,简单暴力,哈哈哈~
更重要的一点:解构语法还适用于其他类型的变量进行互换。所以,用解构可以很easy地进行互换。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持小牛知识库!
本文向大家介绍Java 交换两个变量的数值实现方法,包括了Java 交换两个变量的数值实现方法的使用技巧和注意事项,需要的朋友参考一下 一、参数传递方法 为解决标题问题,首先介绍参数传递方法。目前各类程序设计语言的参数传递方法主要有三种: 1.按值传递 2.按引用传递 3.按指针传递 其中按值传递表示方法(函数)接收的是调用者提供的变量的拷贝,不改变参数的值;按引用传递表示方法(函数)接收的调用者
本文向大家介绍JS实现不用中间变量temp 实现两个变量值得交换方法,包括了JS实现不用中间变量temp 实现两个变量值得交换方法的使用技巧和注意事项,需要的朋友参考一下 1.使用加减法; 2.使用乘除法(乘除法更像是加减法向乘除运算的映射) 注意:该方法可以交换整型和浮点型数值的变量,但在处理浮点型的时候有可能出现精度的损失 而且乘除时b不能为0; 3.使用数组的灵活性 总结 以上所述是小编给
本文向大家介绍Python3之不使用第三方变量,实现交换两个变量的值,包括了Python3之不使用第三方变量,实现交换两个变量的值的使用技巧和注意事项,需要的朋友参考一下 method 1: method 2: 以上这篇Python3之不使用第三方变量,实现交换两个变量的值就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
本文向大家介绍JavaScript交换两个变量值的七种解决方案,包括了JavaScript交换两个变量值的七种解决方案的使用技巧和注意事项,需要的朋友参考一下 前言 这篇文章总结了七种办法来交换a和b的变量值 交换变量值方案一 最最最简单的办法就是使用一个临时变量了,不过使用临时变量的方法实在是太low了 首先把a的值存储到临时变量中,然后b赋值给a,最后拿出临时变量中的a值赋给b,这个办法是最基
问题内容: 我有两个变量: 我的问题是如何交换它们?仅此变量,没有任何对象。 问题答案: 这是交换两个变量的值的单行代码。 给定变量和: 示范如下:
本文向大家介绍Python实现全局变量的两个解决方法,包括了Python实现全局变量的两个解决方法的使用技巧和注意事项,需要的朋友参考一下 本文针对Python的全局变量实现方法简述如下: 先来看下面一段测试程序: 运行结果是: 很显然,这并不是我们想要的结果。 针对这一问题的解决方法就是采用全局变量: 运行结果为: 需要注意:哪里需要全局变量,哪里声明一下;但是函数千万不要传参数,比如用Fuc(
我是初学者,我想通过使用两个旧映射hm1和hm2创建一个新映射hm3,在该映射中,我需要第二个映射的值作为键,第一个映射的值作为值,例如:如果映射hm1包含a1作为key1和abc作为value1,它还包含a2作为key2和xyz作为value2,并且还有另一个映射hm2,它包含a1作为key1和b1作为value1,还包含a2作为key2和b2作为value2,那么在映射hm3中,我需要b1作为
在两行中编写一段代码,即交换两个变量而不使用第三个变量。在java中有可能吗