交换两个变量值不利用额外变量

时间:2022-09-22 18:56:27

今天面试看到这题竟然没答出来~

1. 位运算

通过异或运算也能实现变量的交换:
[cpp] view plain copy
  1. int a=10,b=12;  //a=1010^b=1100;  
  2. a=a^b;    //a=0110^b=1100;  
  3. b=a^b;    //a=0110^b=1010;  
  4. a=a^b;    //a=1100=12;b=1010;  
交换两个变量值不利用额外变量
2. 算术运算
就是通过+和-运算来实现。代码如下:
[cpp] view plain copy
  1. int a,b;  
  2. a=10;b=12;  
  3. a=b-a;   //a=2;b=12  
  4. b=b-a;   //a=2;b=10  
  5. a=b+a;   //a=12;b=10