美文网首页
a=1;b=2交换这两个值的方法?

a=1;b=2交换这两个值的方法?

作者: 凉城十月 | 来源:发表于2020-11-29 23:56 被阅读0次

    共有四种方法。

    1. 使用中间变量t(这是最基础的一种方法)
    var t
    t = a //a=1,t=1,b=2
    a = b //a=2,t=1,b=2
    b = t //a=2,t=1,b=1
    
    2. 使用ES6的解构赋值

    [a, b] = [b, a]
    结构赋值适用于字符串、数字、布尔值和对象等,语句简短。对于大多数情况都可以优先使用这种方式。

    3. 加减法

    这种方法不需要使用额外的内存,因为他没有用到其他的临时变量或者是临时数组。

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

    这种方法虽然灵活,但是也有很大的局限。
    1.只能是整数
    2.在第一步a=a+b时要注意数字溢出(总和必须小于Number.MAX_SAFE_INTEGER)。

    4. 按位XOR运算符(异或^)

    这是XOR真值表。

    a b a ^ b
    0 0 0
    1 1 0
    0 1 1
    1 0 1

    那么使用这个我们如何交换a、b的值呢?

    let a = 1; //a为001
    let b = 2; //b为010
    a=a^b; //001^010,a为011
    b=a^b; //011^010,b为001
    a=a^b; //011^001,a为010
    a; //2
    b; //1
    

    按位XOR运算符只能交换整数。

    相关文章

      网友评论

          本文标题:a=1;b=2交换这两个值的方法?

          本文链接:https://www.haomeiwen.com/subject/xdblwktx.html