学习任何语言基础时,两个数值得交换是必须掌握的,下面简绍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 }