1. 程式人生 > >C 原地交換兩個變數的值

C 原地交換兩個變數的值

第一種方法,大家會藉助第三個變數來實現:

如:tmp=A;A=B;B=tmp;

這種方法需要藉助第三變數來實現;

第二種方法是利用加減法實現兩個變數的交換:

如:A=A+B;B=A-B;A=A-B;

但是 如果 A+B 超出 A的範圍 ,會引起溢位。

第三種方法是得用位異或運算來實現,也是效率最高的一種,在大量資料交換的時候,效率明顯優於前兩種方法:

如:A=A^B;B=A^B;A=A^B;

原理:利用一個數異或本身等於0和異或運算符合交換率。

異或的意思就是:不同 才可以得1,否則為0

// 異或
// 0^0=0
// 1^1=0
// 1^0=1
// 0^1=1

#include<stdio.h>
int swap(int a,int b){
	a = a^b;
	printf("%d\n",a);
	b = a^b;
	printf("%d\n",b);
	a = a^b;
	printf("%d\n",a);
}
int main(){
	int a = 2;
	int b = 4;
	swap(a,b);
}