常见的方法如下
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;
}
用按位异或的方法可以解决该面试题。
个人吐槽:感觉这道题不实用。