黑马程序员技术交流社区

标题: 算术方法——交换两个变量的值(2) [打印本页]

作者: 悄然林静    时间: 2016-7-23 23:49
标题: 算术方法——交换两个变量的值(2)
如题,用算术方法,通过对变量重新赋值,最终达到交换两个变量的值的目的:
  1. //中级方法
  2. #include<stdio.h>
  3. int main()
  4. {
  5.     int a=5,b=20;
  6.     a=b-a;  //对a变量重新赋值,执行完毕后a=15
  7.     b=b-a;  //对b变量重新赋值,注意等式右边的a=15,执行完毕后b=5
  8.     a=b+a;  //再次对a变量赋值,注意等式右边的b=5,执行完毕之后a=20
  9.    
  10.     printf("a=%d\nb=%d\n",a,b);
  11.    
  12.     return 0;
  13. }
复制代码
相比贴(1)中的中间变量法,算数方法不容易想到,且需要进行多次计算,执行效率较差

作者: gdutyong    时间: 2016-7-24 01:48
有个条件,如果在未知的情况下,a=b的话,会出现BUG
作者: Chenjunfeng    时间: 2016-7-30 13:21
二楼说的很对,a=b时就交换不了。
作者: anan安    时间: 2016-7-30 22:12
这样也可以???????

我之前用 121 加减减


现在用异或

a = a ^ b;
b = a ^ b;
a = a ^ b;



作者: 18072727834    时间: 2016-7-30 22:35
现在用异或做




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2