ck_lai
[C]新手请教x+=y与x=x+y的问题
书中提到:x+=y比x=x+y少一次运算,不明白为什么,能解释一下吗?
cheng_lai_shun
是的,我不会表达,所以解释不来!呵呵
cugb_cat
稍微有些优化功能的编译器,编译出来的汇编语句应该是一样的。
hemu1190
因为运算符重载的时候,+=是一个运算符;而+和=分别是单独的运算符!
ruoyisiyu
[quote]原帖由 [i]cugb_cat[/i] 于 2008-2-20 12:39 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7981735&ptid=1054698][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
稍微有些优化功能的编译器,编译出来的汇编语句应该是一样的。 [/quote]
i=0和i=i-i是一个效果
davycu
进来吓了一跳,还以为flw2同学呢,:shock:
ck_lai
[quote]原帖由 [i]cugb_cat[/i] 于 2008-2-20 12:39 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7981735&ptid=1054698][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
稍微有些优化功能的编译器,编译出来的汇编语句应该是一样的。 [/quote]
那效率就一样咯?
cugb_cat
[quote]原帖由 [i]ck_lai[/i] 于 2008-2-20 14:50 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7982578&ptid=1054698][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
那效率就一样咯? [/quote]
是,提高效率不应把重点放在这方面,应该是算法的提高。
roger0922
[quote]原帖由 [i]hemu1190[/i] 于 2008-2-20 12:51 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7981799&ptid=1054698][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
因为运算符重载的时候,+=是一个运算符;而+和=分别是单独的运算符! [/quote]
顶 前者做了一次运算 而后者做了运算后还要赋值于X
flw2
[quote]原帖由 [i]davycu[/i] 于 2008-2-20 13:42 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7982105&ptid=1054698][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
进来吓了一跳,还以为flw2同学呢,:shock: [/quote]
:outu:
实在不知道您从哪看出来我们是同学
fl3w
[quote]原帖由 [i]flw2[/i] 于 2008-2-20 15:48 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7982997&ptid=1054698][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
:outu:
实在不知道您从哪看出来我们是同学 [/quote]
我们才是:em17: :em17: :em17:
davycu
回复 #11 flw2 的帖子
:shock: :em14: :em06:
flw2
有的系统指令支持把一个数a加到令一个数b并存储在b中,这样编译器可能不需要保存a+b的临时值
在没有这样指令的系统上,比如加法指令为add a,b,a 那么a+=b a=a+b,编译器即使不优化也-更应该-知道使用这个指令,而不是使用临时一个存储或者寄存器
但是我试验了两个系统,gcc对a+=b 和a=a+b都分别产生一样的指令
flw2
[quote]原帖由 [i]davycu[/i] 于 2008-2-20 16:43 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7983403&ptid=1054698][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
:shock: :em14: :em06: [/quote]
:outu: 你还这种表情呢?
davycu
回复 #15 flw2 的帖子
很抱歉无意中的一句话引起您的不快,解释一下我那句话:进来时第一眼看到楼主的头像(现在已经换了)跟阁下的一样,所以说了那句,“同学”只是我平时的习惯用语,不是说你们是同学
占用楼主地方了,还请见谅哈
flw2
[quote]原帖由 [i]davycu[/i] 于 2008-2-20 17:26 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7983734&ptid=1054698][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
很抱歉无意中的一句话引起您的不快,解释一下我那句话:进来时第一眼看到楼主的头像(现在已经换了)跟阁下的一样,所以说了那句,“同学”只是我平时的习惯用语,不是说你们是同学
占用楼主地方了,还请见谅哈 [/quote]
呵呵,没事,我也没有不愉快,只是这种情况下实在很难理解,你说呢
没事了,不用回
林有德
[quote]原帖由 [i]hemu1190[/i] 于 2008-2-20 12:51 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=7981799&ptid=1054698][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
因为运算符重载的时候,+=是一个运算符;而+和=分别是单独的运算符! [/quote]
是的