Chinaunix首页 | 论坛 | 博客
  • 博客访问: 105225
  • 博文数量: 18
  • 博客积分: 226
  • 博客等级: 二等列兵
  • 技术积分: 183
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-24 18:31
文章分类

全部博文(18)

文章存档

2013年(9)

2012年(7)

2011年(2)

我的朋友

分类: C/C++

2012-11-18 21:36:25

三种数据交换操作
1、设置一个中间变量(最常用)

点击(此处)折叠或打开

  1. int c;
  2. c = a;
  3. a = b;
  4. b = c;
2、加减操作(两个变量)

点击(此处)折叠或打开

  1. a += b;
  2. b = a - b;
  3. a -= b;

3、异或操作

点击(此处)折叠或打开

  1. a ^= b;
  2. b ^= a;
  3. a ^= b;
    以上三种方法,特别是第三种绝对是一种最牛逼的,偶然间想到以前说不设置中间变量如何交换数据,今天看最大公约数的实现,网友们里面就有这两种,花费了点时间,搞成自己的吧。
阅读(1631) | 评论(3) | 转发(4) |
给主人留下些什么吧!~~

linsanko2013-09-06 21:37:52

hml1006:第一种最高效,第二种连溢出都没考虑到,根本就是错误,第三种太花哨,可读性最差,并没有减少时间,表面没用中间变量,实际上还要消耗寄存器

嗯,说的挺对的,但是我觉得上面更多的是一种想法吧。

回复 | 举报

linsanko2013-09-06 21:37:52

hml1006:第一种最高效,第二种连溢出都没考虑到,根本就是错误,第三种太花哨,可读性最差,并没有减少时间,表面没用中间变量,实际上还要消耗寄存器

嗯,说的挺对的,但是我觉得上面更多的是一种想法吧。

回复 | 举报

hml10062012-11-19 11:49:46

第一种最高效,第二种连溢出都没考虑到,根本就是错误,第三种太花哨,可读性最差,并没有减少时间,表面没用中间变量,实际上还要消耗寄存器