硬核快餐 C語言 交換兩變數值的六種方法

2021-10-04 19:34:57 字數 1311 閱讀 9199

1建立中間變數

這是最快也是最簡單的辦法

#include

intmain()

2 函式交換法

呼叫函式交換兩個數的值

#include

void

swap

(int

*p1,

int*p2)

intmain()

3用加減或乘除運算來交換

#include

intmain()

注意:這兩種方法容易越界,使用時應謹慎。

所以這種方法是有缺陷的,那有沒有類似的不溢位的方法呢?答案是肯定的,有。下面就來看這種不溢位的方法。

4異或交換法(當a,b相等時,不可用)

掌握這種方法,就要知道什麼叫異或。異或:一般是針對二進位制數來說的,它的規則就是如果兩個二進位制數不相同,則異或結果為1;否則,異或結果為0。

這種方法看著和第三種很類似,但卻比它更嚴謹。為什麼這麼說,因為上面說了,加減乘除這種方法很能會產生溢位錯誤,而異或卻完全不會。因為兩個二進位制數異或的結果只能是0或1,不會產生進製或借位,不會超出變數的表示範圍。

#include

intmain()

5用位運算交換

最後,介紹一種高逼格的方法,很少人會想到。__int64表示64位整型變數,這個在vc6.0裡是支援的。

b = (__int64)((__int64)a << 32 | (a = b)) >> 32;這個語句中a=b的值為b的值20,同時把b的值賦給a。整個語句的意思:先把a強制轉化為64位整型變數,然後把它左移32位後與(a=b)按位或,把整個結果再強制轉換為64位整型變數,然後右移32位得到b的值。其實,求b的值沒必要有|(a=b)這部分,但因為想同時把b的值賦給a,且把|(a=b)放在這兒不會影響到b最終的值,所以寫成這樣。這兒就採用移位的方法避免了用中間變數。

```c

#include

intmain()

6指標交換法

解釋:這種方法是利用到指標進行交換,初學者未學到指標的可以先看看,或之後再回來看。

#include

intmain

(void

)

交換兩個變數值

交換兩個變數的值 引入第三方變數 int x 5,y 3 int temp 0 temp x x y y temp system.out.println x x t y y 引入第三方變數是很容易解決的!不引入第三方變數 方法一 先求和,然後在從和裡面減掉乙個數,得到另乙個數 int a 3,b 5...

PHP交換兩個變數值

方法一 交換兩個變數的最簡單方法是使用第三個臨時變數 1 2 a 15 3 b 27 4 交換邏輯 5echo 交換前的數字為 6 echo a a.且 b b 7 temp a 8 a b 9 b temp 10 echo 交換後的數字為 11 echo a a.且 b b.輸出 交換前的數字為 ...

交換兩個變數值的方法

這是學程式設計的人都會想到的方法,因為邏輯性不是很強交換起來比較方便,能很快達到交換資料的目的,但是多乙個變數就需要為它分配儲存空間,以下為乙個例子 var left 10 var right 8 console.log 左手為 left console.log 右手為 right console....