在大量的開發中常常會遇到需要交換兩個數值的問題,今天就給大家分享一些數值交換方面的方法:
第一種方法:
這也是大家容易想到的方法,即利用中間變量達到交換兩個數的目的,具體如下:
int tmp;
tmp = i1;
i1 = i2;
i2 = tmp;
這種方法執行效率是低了
第二種方法:
利用數學中的運算技巧:
i1 = i1 + i2;
i2 = i1 - i2;
i1 = i1 - i2;
這樣也可以實現兩個數的交換
第三種方法:
則是利用位運算中的異或來實現數據交換
i1 = i1 ^ i2;
i2 = i1 ^ i2;
i1 = i1 ^ i2;
這種方式的執行效率相對來說比較高。
源代碼如下:
#include
void swap1(int i1,int i2)
{
int tmp;
tmp = i1;
i1 = i2;
i2 = tmp;
}
void swap2(int i1,int i2)
{
i1 = i1 + i2;
i2 = i1 - i2;
i1 = i1 - i2;
}
void swap3(int i1,int i2)
{
i1 = i1 ^ i2;
i2 = i1 ^ i2;
i1 = i1 ^ i2;
}
int main(void)
{
int i,j;
i = 3;
j = 5;
swap1(i,j);
printf("i = %d,j = %d\n",i,j);
i = 6;
j = 8;
swap1(i,j);
printf("i = %d,j = %d\n",i,j);
i = 2;
j = 7;
swap1(i,j);
printf("i = %d,j = %d\n",i,j);
return 0;
}
執行結果: