關於C語言交換兩個int型別變數的討論

2021-06-29 08:19:06 字數 647 閱讀 3408

c語言中交換兩個int型別變數有以下幾種方法:

1、使用第三方變數

int main()

int a = 10;

int b = 20;

int temp;

temp = a;

a = b;

b = temp;

2、不使用第三方變數(使用加減法)

int main()

int a = 10;

int b = 20;

a = a - b;

b = b - a;

a = b + a;

3、不使用第三方變數(使用^運算子)

int mian()

int a = 10;

int b = 20;

a = a ^ b;

b = a ^ b;

a = a ^ b;

1、就可讀性而言,第一種方式是最佳的選擇,第二種和第三種可讀性不佳;

2、就執行效率而言,第二種和第三種相對第一種方式更高;

3、第二種方式有缺陷,原因是int型別變數是有範圍的,如果a是乙個很大的正整數在int型別範圍內,b是乙個非常小的負整數也再int型別範圍內,但a - b的值很有可能溢位,這樣結果就會是錯誤的。

所以綜合上述,選擇第一種方法為最佳。

交換兩個int型別指標的問題

在剛剛接觸c語言的時候我們一定學過乙個swap函式來交換兩個數 void swap int a,int b 顯然上面的函式是錯的,因為傳進去的a是形參,在函式內部a,b進行交換並不會影響函式外a和b的值,為了解決這個問題,我們改為傳入a和b的位址進去,通過解引用將a和b的值交換,這樣就可以真正意義上...

C語言 交換兩個變數的

c語言中交換兩個變數值 a,b 的幾種方法 1 利用臨時變數 int temp temp a a b b temp 2 不用臨時變數 這種方法有可能溢位 a a b b a b a a b 3 用按位運算子 這種方法不適合浮點數 a a b b a b a a b 4 記憶體拷貝方法 個人覺得這種方...

c語言 兩個值的交換

指標的呼叫 交換兩個數值 一 子函式 被呼叫函式 的改變要想修改父函式 呼叫函式 的值需要 1.傳指標 2.解引用 二 的實現過程 錯誤一 void swap int a,int b int tmp tmp a a b b tmp int main int a 10 int b 20 swap a,...