只使用兩個參數(shù)交換兩值

2019-07-10 11:35 更新

1.使用減法交換兩值

int a = 10, b = 12;
a=b-a; //a=2;b=12
b=b-a; //a=2;b=10
a=b+a; //a=10;b=10
//分析:
a = b-a//以記錄差為出發(fā)點
b = b-(b-a) = a
a = b-(b-a) + b-a = a + b-a

2.使用加法交換兩值

int a = 10, b = 12;
a=a+b=22;
b=a-b=10;
a=a-b=12;
//分析:
a = a+b//以記錄和為出發(fā)點
b = a+b-b = a;
a = a+b - a+b-b = a+b - a;

3.使用按位異或交換兩值

int a = 10, b = 12; //a=1010^b=1100;
a=a^b; //a=0110^b=1100;
b=a^b; //a=0110^b=1010;
a=a^b; //a=1100=12;b=1010;
//分析:
a = a^b//原理與記錄a、b的和或差相同
b = a^b^b = a//注意:a^b^b = a
a = a^b ^ a^b^b = b//注意:a^b = b^a
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號