2012-10-10 39 views
1

給定一個操作,如int myNum = 5 + (5 * 9)或任何其他數學運算,該語句的哪些部分(如果有的話)由編譯器執行?哪些是在運行時執行的?顯然,不斷變化的變量在編譯時不能簡化,但某些操作可能會是這樣。編譯器是否甚至在意做任何這樣的簡化(例如製作上述語句int myNum = 50;)?在負載,速度或任何其他客觀測量方面,這甚至是重要的嗎?編譯器執行哪些算術操作(如果有的話)?

細節是關鍵,請儘可能詳細地闡述你的想法。

我的意思是這適用於任何算術操作。

+3

這將取決於編譯器 - 是否有你想到的特定的一個? – tpg2114

+0

LLVM我熟悉的一個。 – zachjs

+1

@zsnow:然後您可以在LLVM在線演示中輕鬆檢查自己:http://llvm.org/demo/index.cgi –

回答

3

結賬constant folding

常量摺疊是在編譯時簡化常量表達式的過程。常量表達式中的術語通常是簡單的文字,如整數2,但也可以是其值永遠不會被修改的變量,或明確標記爲常量的變量。

相關問題