常见的方法如下
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;
}
这种方法是不可取的,因为a+b和a-b的运算可能会导致数据溢出。
void swap3(int *a, int *b)
{
*a^=*b;
*b^=*a;
*a^=*b;
}
用按位异或的方法可以解决该面试题。
个人吐槽:感觉这道题不实用。