2014-08-29 196 views
0

這兩個陳述的表現是否有區別?「i ++」如何比「i = i + 1」更高效?

i++; 
i = i + 1; 
+2

您的標題與您的問題不符。 – Mysticial 2014-08-29 05:01:24

+0

++ i是最高效的,i ++在遞增變量之前返回i的一個副本。如果++我簡單地增加變量並避免複製。 – 2014-08-29 05:06:01

回答

6

取決於優化。在大多數處理器上,可以將其表示爲單個機器語言指令。另一方面,i = i + 1可以由多達四個表示:加載i,加載1,添加,存儲到i;儘管即使是一箇中等的智能編譯器也應該能夠識別它可以將其重寫入前者。

0

不,沒有區別。編譯器會將這些編譯成相同的程序集

+0

查看amadan的回答 – nobalG 2014-08-29 05:03:28

+1

是的,Amadan的回答更加完整和正確。我確實假設代碼是在啓用優化的情況下編譯的。 – Stephen 2014-08-29 05:10:44

+1

@DividebyZero:說實話,今天在LLVM和東西的時代,我相信其實沒有什麼區別。這只是我不會自動假設C =現代C :)(我有一些熟人仍然在25歲的Sun boxen工作) – Amadan 2014-08-29 05:14:09

相關問題