全国咨询/投诉热线:400-618-4000

轻松学习C语言系列-交换两个变量值的多种方式

更新时间: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的值,既不用借助于中间变量,又不会发生数据溢出的情况,所以小伙伴们,你们明白了吗?