主题:【原创】继续关于swap的讨论 -- 不锈钢破锣
- 共: 💬 22 🌺 5
(1)
temp=a;
a=b;
b=temp;
固然要用一个临时变量,但是
(2)
a=a+b;
b=a-b;
a=a-b;
是不是只是在表面上不用临时变量?
拿 "a=a+b;"打个比方:变量 a 在assignment的两边都出现,那么一个compiler是
如何编译这个a=a+b的? 除了暗中用一个临时变量,还有其它办法吗?
即这样:
temp=a+b; a=temp;
也就是说 a 不能同时被用来做加法,而在这个过程中又改变它的值.
更有甚者,(2)中的三行,每行都有一个变量同时出现在assignment的两边,那是不是
compiler要在暗中使用三个临时变量? 如果是这样,岂不是比在程序中明着使用
一个临时变量更糟糕吗?
- 相关回复 上下关系8
😉有意思的问题 ericxy 字360 2006-11-06 00:51:50
😏呵呵,这个答案有问题 Andor 字513 2006-11-01 12:09:43
🙂【原创】补充一点 无斋主人 字686 2006-10-29 00:30:46
😉有重大问题请教-----
🙂放到寄存器呀。。。 大大的熊 字0 2006-10-28 14:06:49
🙂不管放到什么地方, 觉昌安塔克世 字78 2006-10-28 17:07:59
🙂是这样的,首先寄存器的读取速度远远快于内存。 kavin 字628 2006-10-30 03:28:59
🙂你说什么?你知道什么是寄存器吧? 大大的熊 字126 2006-10-28 17:41:17