1. 程式人生 > >交換兩個變數的值,不使用第三個變數的方法

交換兩個變數的值,不使用第三個變數的方法

 

Q1: 我們都知道交換兩個數的數值可以用三行程式碼解決,這是在C語言中就學過的:

int c;
c = a;
a = b;
b = c;

 

數學老師可能會給我們這個建議:

a = a + b;
b = a - b;    //b=a+b-b=a
a = a - b;    //a=a+b-a=b

但是我們如果把兩個整數數值設定得非常大,那麼就會超出int的範圍,會發生強制轉化,這是顯然很令人鬱悶的。如果有要求不能用第三個引數來進行交換操作呢?

 

a = a ^ b;   
b = a ^ b;    //(a^b)^b=a
a = a ^ b;    //(a^b)^a=b