让我们来交换两个变量的值,我们常常都会是直接引用第三方变量来作为交换手段,当然这也是最简单的方法之一。 但是如果要求我们引用第三方变量时,我们应该如何操作呢?下面我将讲述两个方法来实现两个变量值的交换
-
方法一
#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过大时的问题,但是该方法只能用于整数的交换。因为位操作符的操作对象只能是整数。