今天去面试,碰到一个题,两个变量不用中间变量如何交换值?
可把我难倒了,请问大虾如何解决?

解决方案 »

  1.   

    编程时,如果碰到需要交换两个变量的值,那么习惯做法是使用一个中间变量,但是这并不是必须的;
    可以使用这样的方法:
    int a,b;
    a=值1;
    b=值2;
    //交换
    a=a^b;
    b=b^a;
    a=a^b;
    //此时,a和b的值已经交换了;
     
    证明:
    a1=a0^b0;
    b1=b0^a1=b0^(a0^b0)=a0^b0^b0=a0;
    a2=a1^b1=(a0^b0)^a0=b0^a0^a0=b0;
     
    应用的主要原理就是一个值经过同一个数的两次异或后值不变!
      

  2.   

    int a = 3;
                int b = 5;            a = a ^ b;
                b = a ^ b;
                a = a ^ b;
      

  3.   

    int a = 3
    int b = 5a = a + b
    b = a - b
    a = a - b
      

  4.   

    int a=5,b=1;a=a-b;
    b=a+b;
    a=b-a;/*
    a=a+b;
    b=a-b;
    a=a-b;*/