两个变量不用中间变量如何交换值?
今天去面试,碰到一个题,两个变量不用中间变量如何交换值? 
 可把我难倒了,请问大虾如何解决?
------解决方案--------------------编程时,如果碰到需要交换两个变量的值,那么习惯做法是使用一个中间变量,但是这并不是必须的; 
 可以使用这样的方法: 
 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;    
 应用的主要原理就是一个值经过同一个数的两次异或后值不变!
------解决方案--------------------int a = 3; 
             int b = 5;   
             a = a ^ b; 
             b = a ^ b; 
             a = a ^ b;
------解决方案--------------------int a = 3 
 int b = 5   
 a = a + b 
 b = a - b 
 a = a - b
------解决方案--------------------int a=5,b=1;   
 a=a-b; 
 b=a+b; 
 a=b-a;   
 /* 
 a=a+b; 
 b=a-b; 
 a=a-b;   
 */