搜索
查看: 2636|回复: 9
打印 上一主题 下一主题

为什么这样啊,理解不到?

[复制链接]
跳转到指定楼层
楼主
发表于 2013-4-30 22:29:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
5啊哈币

7{[Q1NU3S(~N~~LG)K8V9$C.jpg (28.16 KB, 下载次数: 2)

7{[Q1NU3S(~N~~LG)K8V9$C.jpg

最佳答案

查看完整内容

给每一步的a,b都加上下标,推导一遍就知道了 a1=b-a; //a1是第一步里面的新值,a,b是原始数据 b2=b1-a1=b1-(b-a)=b-(b-a)=a; a3=b2+a2=a+(b-a)=b; 所以三步计算之后,b3=b2=a, a3=b,完成了交换 这是很久之前使用的一个小技巧,当时存储区价格非常昂贵,这样写可以节省一个变量的空间,所以就有了这种写法 现在存储器很便宜,所以一般这么写 int temp; temp = a; a = b; b = temp; 以提高程序的可读性
沙发
发表于 2013-4-30 22:29:56 | 只看该作者
给每一步的a,b都加上下标,推导一遍就知道了
a1=b-a; //a1是第一步里面的新值,a,b是原始数据
b2=b1-a1=b1-(b-a)=b-(b-a)=a;
a3=b2+a2=a+(b-a)=b;

所以三步计算之后,b3=b2=a, a3=b,完成了交换

这是很久之前使用的一个小技巧,当时存储区价格非常昂贵,这样写可以节省一个变量的空间,所以就有了这种写法
现在存储器很便宜,所以一般这么写

int temp;
temp = a;
a = b;
b = temp;

以提高程序的可读性
板凳
发表于 2013-5-1 09:59:06 | 只看该作者
当执行b=b-a时就是计算     
b=b-(b-a)
执行第三步a=b+a时即
a=[b-(b-a)]+a
推算一下就出来了
地板
发表于 2013-5-2 14:42:53 | 只看该作者
把里面加减用^代替也是一样
5#
发表于 2013-5-4 13:51:29 | 只看该作者
既然有最佳答案,,,我也就不回答了
6#
发表于 2013-7-30 22:12:29 | 只看该作者
回贴也是一种对别人的肯定,哈哈:)
7#
发表于 2013-10-12 09:12:04 | 只看该作者
总算弄懂了,谢谢
8#
发表于 2013-10-30 20:47:24 | 只看该作者
。                           
9#
发表于 2014-12-17 23:38:57 | 只看该作者
现在明白了些
10#
发表于 2014-12-18 22:05:10 来自手机 | 只看该作者
原来只知道可以这样用,还不知道为什么。。。。感谢了
来自: 微社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

广播台
特别关注
快速回复 返回顶部 返回列表