淘客熙熙

主题:【原创】继续关于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要在暗中使用三个临时变量? 如果是这样,岂不是比在程序中明着使用

一个临时变量更糟糕吗?

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河