码迷,mamicode.com
首页 > 其他好文 > 详细

C零散_关于swap()的实现的三种方法

时间:2015-03-08 18:30:30      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:

以int类型为例。

一:

1 int tmp, left, right;
2 tmp = letf;
3 left = right;
4 right = tmp;

第一种是最为常见的,借助中间变量进行数值交换。

第二种和第三则不借助于中间变量。

 

二:

1 int left, right;
2 left = left + right - (right = left);

这种方法与编译器相关,不推荐,只做了解即可。

 

三:

1 int left, right;
2 left = left ^ right;
3 right = left ^ right;
4 left = left ^ right;

第三种相当来说难与理解一点,因为用到了C语言的按位与逻辑,我们可以拆开来看。

第2行代码跑完后,则left = left ^ right,刚第3行可变为right = left ^ right ^right。根据与运算的特性(相同得0,不同得1)和交换律可知第3行实际结果为right = letf。

再到第4行left = left ^ right ,同样代入,得left = left ^ right ^ left,同理得letf = right。

此方法简单可行,推荐。

 

最后再提一个我经常忘记的strcmp()函数,粘贴到此,以备以后翻阅。

技术分享

C零散_关于swap()的实现的三种方法

标签:

原文地址:http://www.cnblogs.com/RookieSuperman/p/4321991.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!