#include<stdio.h>
int main()
{
int a, b;
scanf("%d%d", &a, &b);
//该方法看似可行但是当ab很大时,a+b超过了int范围就不可行了
a = a + b;
b = a - b;
a = a - b;
printf("%d %d", a, b);
return 0;
}该方法看似没有什么问题,但是一旦当a b 变量很大时,我们并不能保证a+b不会超过整形变量的范围
#include<Stdio.h>
int x,y;
scanf("%d%d", &x, &y);
x = x ^ y;
y = x ^ y;//可直接看成y=x^y^y(将x代入),y^y结果=0,0^任何数结果都是本身,故相当于y=x
x = x ^ y;//将y=x的结果代入可得x=x^y^x,同理相当于x=y
printf("%d %d", x, y);
return 0;该方法使用到了位操作符的异或操作符(^),对于异或操作符我们要知道,当相同的两个数进行异或时结果为0,而当0与任何数字进行异或时结果都为数字本身。该方法的确实可以完美解决当a+b过大时的问题,但是该方法只能用于整数的交换。因为位操作符的操作对象只能是整数。