3 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
i++
++i
i
++i
i++
.
$ cat i++.cextern void g(int i);void f(){ int i; for (i = 0; i < 100; i++) g(i);}
++i
i++
:
$ diff i++.c ++i.c6c6< for (i = 0; i < 100; i++)---> for (i = 0; i < 100; ++i)
$ gcc -c i++.c ++i.c $ gcc -S i++.c ++i.c
$ md5 i++.s ++i.s MD5 (i++.s) = 90f620dda862cd0205cd5db1f2c8c06eMD5 (++i.s) = 90f620dda862cd0205cd5db1f2c8c06e$ md5 *.o MD5 (++i.o) = dd3ef1408d3a9e4287facccec53f7d22 MD5 (i++.o) = dd3ef1408d3a9e4287facccec53f7d22

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊
首先,我們還不清楚 ++i
比 i++
,至少在涉及整數(shù)變量的情況下。
因此,我們應(yīng)該問的問題不是這兩種操作中哪一種更快,而是這兩種操作中哪一種更準(zhǔn)確地表達(dá)了您想要完成的任務(wù)。我認(rèn)為,如果您不使用表達(dá)式的值,則永遠(yuǎn)不會(huì)有使用該表達(dá)式的理由。 i++
而不是 ++i
,因?yàn)閺膩頉]有理由復(fù)制變量的值,增加變量,然后丟棄副本。
++i

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
++i
i
int
i
i++
++it
Foo Foo::operator++(){ Foo oldFoo = *this; // copy existing value - could be slow // yadda yadda, do increment return oldFoo;}
++i
++i
i++
- 3 回答
- 0 關(guān)注
- 423 瀏覽
添加回答
舉報(bào)