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