目录
在不创建临时变量的情况下,交换两个变量,一般有两种方法
1.加减法
通过2个变量的相加相减从而达到两个变量相互交换的目的,但是这种方法有一定的缺点,当变量超过32位时,且无符号,得到的结果可能会有问题,解决的方法是printf时,按照u%打印。
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a + b; // a = 30
b = a - b; // b = 10
b = a - b; // a = 20
printf("a= %d, b = %d", a, b);
return 0;
}
2.异或法
这种方法是最常用的办法,也是最推荐的办法,这样不会产生超出范围等错误
异或符号 ^ : 相同为0 ,相异为1
具体原理: a = 10 b = 20
a: 0000 0000 0000 0000 0000 0000 0000 1010
b:0000 0000 0000 0000 0000 0000 0001 0100
a ^ b=:0000 0000 0000 0000 0000 0000 0001 1 110 = 30 = a
a^b = : 0000 0000 0000 0000 0000 0000 0000 1010 = 10 = b
a^b = : 0000 0000 0000 0000 0000 0000 0001 0100 = 20 = a
代码为:
#include<stdio.h>
int main()
{
int a =10;
int b =20;
a = a^b;
b = a^b;
c = a^b;
printf("a = %d, b = %d", a, b);
return 0;
}