注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

杨伟的博客

程序人生

 
 
 

日志

 
 

编程:最巧妙的交换两个变量值的方法  

2007-11-23 21:24:00|  分类: IT界 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
比如,a=5, b=8,交换后使得 a=8, b=5。
这个并不复杂,通常的做法是引入中间变量:
temp=a;
a=b;
b=temp;

记得高中时刚学编程,在书上看到过另外一个十分巧妙的交换两个变量的方法:
a=a+b;
b=a-b;
a=a-b;
这个方法没有引入中间变量,我当时看了就十分喜欢~~。

不过这个方法可能会导致溢出。

类似的,用位运算的方法速度更快,并且不会溢出:
a=a^b;
b=a^b;
a=a^b;
(不同语言请自己翻译语法)

对于 C 语言,可以简化如下:
a^=b;
b^=a;
a^=b;

还可以继续简化:
a^=(b^=(a^=b));

还可以去掉括号:

a^=b^=a^=b;

呵呵,最后的表达式很神奇吧。

不知道还有没有别的好方法。
  评论这张
 
阅读(3)| 评论(4)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017