學習任何語言基礎時,兩個數值得交換是必須掌握的,下面是3種不同的方式(c語言)
方法一:利用數學的計算技巧
1 #include <stdio.h> 2 int main() 3 { 4 5 int a =10, b = 20; 6 7 printf("交換前a=%d, b=%d\n", a, b); 8 9 a = a - b; 10 b = a + b; 11 a = b - a; 12 13 printf("交換后a=%d, b=%d\n", a, b); 14 15 return 0; 16 }
這種方法的寫法不唯一,對於a,b;只要先給其中一個先賦予a-b,其他的自己算一下就能寫出來;
方法二:第三方變量,也是最常用,可讀性最好的
1 #include <stdlib.h> 2 #include <stdio.h> 3 int main() 4 { 5 6 int a =10, b = 20; 7 printf("交換前a=%d, b=%d\n", a, b); 8 9 int temp = a;//先定義一個臨時變量 10 a = b; 11 b = temp; 12 13 printf("交換后a=%d, b=%d\n", a, b); 14 15 return 0; 16 }
方法三:位運算,利用^異或運算的特點:a^b^a = a^a^b = 0^b = b,交換律,相同數值異或為0,0和任何數異或為任何數
1 #include <stdio.h> 2 int main() 3 { 4 int a =10, b = 20; 5 printf("交換前a=%d, b=%d\n", a, b); 6 7 a = a^b; 8 b = b^a; 9 a = a^b; 10 11 printf("交換后a=%d, b=%d\n", a, b); 12 13 return 0; 14 }