C语言交换两个数的三种方法
一、基础方法,引入变量
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
int tmp = a;
a = b;
b = tmp;
printf("%d %d", a, b);
return 0;
}
这里引入一个寄存器tmp,此时的过程可以类比为两个杯子中有不同饮料,现在需要将两杯饮料互换,引入一个新的空杯子可以帮助大家理解这个交换的过程。
这是最基础也是最常用的交换方法。
二、使用加法互换两数(不引入变量)
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a + b;
b = a - b;
a = a - b;
printf("%d %d", a, b);
return 0;
}
a=a+b;此时a的值为10,b的值为20,相加得a的值为30.
b=a-b;此时a的值为30,b的值为20,相减新的b的值为10.
a=a-b;此时a的值为30,b的值由上一步得为10,相减得新的a的值为20.
此时a与b已互换,达到要求,较为容易理解。
三、借助异或完成(不引入变量)
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("%d %d", a, b);
return 0;
}
异或的方法较为少见,此处举例介绍:
a=10换为二进制为01010
b=20换为二进制为10100
异或的基本规则:相同为0不同为1
a=a^b得此时a为11110.
b=a^b得此时b为01010.
a=a^b得此时a为10100.
生活中我们只需记住a ^ b ^ a=b