更新时间:2016年03月29日17时06分 来源:传智播客 浏览次数:
假设现在有两个变量
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的值,既不用借助于中间变量,又不会发生数据溢出的情况,所以小伙伴们,你们明白了吗?