原來還可以這麼交換變數(交換兩個數字)

2021-10-17 12:26:30 字數 1002 閱讀 6939

在日常的程式設計中,大家一定都會遇到要交換兩個變數,那你到底能想出幾種方法呢???

int tmp = a;

a = b;

b = tmp;

#include

intmain()

a = a + b;

b = a - b;

a = a - b;

#include

intmain()

但是這種方法有乙個問題,當 a= a+b ,a和b特別大的時候,a會整型溢位,這樣會有二進位制位的丟失

a = a ^ b;

b = a ^ b;

a = a ^ b;

#include

intmain()

{int a =10;

int b =20;

printf

("before: a = %d b = %d \n"

, a, b)

; a = a ^ b;

b = a ^ b;

a = a ^ b;

printf

("after : a = %d b = %d \n"

, a, b)

;return

0;

// a = 10 的二進位制 01010

// b = 20 的二進位制 10100

// ^ 就是將兩個數的二進位制數,相同位置上的兩個數為0(0遇到0就是0,1遇到1就是0),不同的數就是1(1遇到0就是1)

// 1. a = a ^ b 就是 11110

// 2. b 11110 ^ 10100 == 01010

// 3。a 11110 ^ 01010 == 10100

交換兩個變數

目的 實現兩個變數值的交換 以int 型別為例 方法一 使用臨時變數。優點 安全,適合任何型別資料交換,無溢位風險。缺點 保守 效率不高,需要使用第三方臨時變數 棧空間 1 void swap value int var1,int var2 2 方法二 利用 算術運算實現。優點 不需要額外的臨時變數...

swap交換兩個變數

最簡單的交換兩個變數值是用指標。void swap int a,int b work 這裡有個問題,一定要想清楚。為什麼在函式體內不能交換指標了?變成這樣 void swap int a,int b will not work在swap函式裡,a and b 都會產生乙個copy來,那你tmp a ...

交換兩個變數方法

將兩個變數的值互換,相當簡單的問題。假設有變數a b int a int b 方法1 將a b的值互換,為 int tmp a a b b tmp 然而,如果要求不用中間變數,就交換變數的值,該怎麼做呢?乙個比較有效率且眾所周知的方法就是 方法2 三次異或操作 int a 10,b 12 a 101...