不用臨時變數,交換兩個變數的值

2021-09-08 18:11:17 字數 428 閱讀 4526

在學習c語言的時候,涉及到兩個變數值的交換,其中用到臨時變數。

類似於:

temp=a;

a=b;

b=temp;

這樣的語句,如果在沒有臨時變數的情況下,該如何做呢?

網路上的人們給出了兩種方法:

一、異或法

a=a^b;

b=b^a;

a=a^b;

二、加減法

a = a + b;

b = a - b;

a = a - b;

其實我們看加減法更容易理解,也有許多人用這種方法,雖然這些方法可能用不到,但是了解下還是有必要的,至少要讀懂別人的**是吧。

其實兩個方法都類似,我們沒有臨時變數,就自己用乙個來做臨時變數(相當於臨時變數)來完成我們的交換。

char型別的同理

【**】

不用臨時變數交換兩個數的值

就地交換兩個數是比較經典而且基礎的演算法之一。我們要交換兩個數字,通常的做法就建立乙個中間變數,然後進行迴圈賦值,比如說下面的 void switch int p1,int p2 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...

不用臨時變數交換兩個數的值

就地交換兩個數是比較經典而且基礎的演算法之一。我們要交換兩個數字,通常的做法就建立乙個中間變數,然後進行迴圈賦值,比如說下面的 void switch int p1,int p2 這種做法是最常見的一種交換兩個數字的方法,但研究演算法的人總是會提出比較詭異的問題,比如說在手持裝置中,記憶體資源很寶貴...

從「交換兩個變數而不用臨時變數」談起

問題 寫乙個函式,實現交換兩個變數,但不能用臨時變數?分析 交換兩個變數的這一功能,我們用的比較多,也可以很容易的寫出乙個出來,但是題目要求的是不能用臨時變數。並且題目也沒有說明變數是什麼型別,它是int,char,double,還是自定義的結構體,或者是類型別,雖然可以用模板從某種程度上解決這一些...