C語言基礎(chǔ):兩個變量交換值的方法
學(xué)習(xí)任何語言基礎(chǔ)時,兩個數(shù)值得交換是必須掌握的,下面是3種不同的方式(c語言)
方法一:利用數(shù)學(xué)的計算技巧

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,交換律,相同數(shù)值異或為0,0和任何數(shù)異或為任何數(shù)

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 }
