常見的方法如下
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;
}
用按位異或的方法可以解決該面試題。
個人吐槽:感覺這道題不實用。