A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

如题,用算术方法,通过对变量重新赋值,最终达到交换两个变量的值的目的:
  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)中的中间变量法,算数方法不容易想到,且需要进行多次计算,执行效率较差

4 个回复

正序浏览
现在用异或做
回复 使用道具 举报
这样也可以???????

我之前用 121 加减减


现在用异或

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


回复 使用道具 举报
二楼说的很对,a=b时就交换不了。
回复 使用道具 举报
有个条件,如果在未知的情况下,a=b的话,会出现BUG
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马