提到交换两个变量的值,一般对编程有所了解的人最先想到的就是借助于一个中间变量。
假设现在有两个变量
int a=3;int b=4;
那么借助中间变量的交换代码如下:
int tmp=a;//tmp=3
a=b;//a=4
b=tmp;//b=3
如果不借助中间变量,怎么去交换两个变量的值呢?
这里先给大家介绍一种方式,代码如下:
a=a+b;//a=7
b=a-b;//b=3
a=a-b;//a=4
这种方法也实现了变量a,b值的交换,思考一下,上面这种方法有什么缺陷吗?
对,有缺陷!!!
为什么呢?
因为
int数据所有存放的数据范围是有限的,如果a+b的值大于int类型的数据范围,那么就会出现数据溢出的情况。
那么还有没有其他方法来交换变量a,b的值呢?
你又猜对了,有!!!请看如下代码:
a=a^b;
b=a^b;
a=a^b;
第三种方式,可以正确交换变量a,b的值,既不用借助于中间变量,又不会发生数据溢出的情况,所以小伙伴们,你们明白了吗?