题目描述
如何快速的交换两个变量的值
解法一:使用局部变量temp完成交换
解法二:使用加减运算完成交换
解法三:使用异或运算完成交换
code
//解法一:使用局部变量temp完成交换
void swap1(int &a,int &b){
int temp =a;
a = b;
b = temp;
}
//解法二:使用加减运算完成交换
void swap2(int &a,int &b){
a = a+b;
b = a-b;
a = a-b;
}
//解法三:使用异或运算完成交换
void swap3(int &a,int b){
a^=b;
b^=a;
a^=b;
}
综上三种方法比较,法一比较传统,法二是有一些缺陷的,缺点是做a+b,a-b运算时可能导致数据溢出,相比,法三就比较好,采用了按位异或的方式。