2011-09-18 34 views

回答

0

在一些編程語言,宣稱東西是不變將允許編譯器進行優化這將否則是不可能的。此外,聲明一些常量可以是一種有用的方式,用於記錄代碼中可能會被破壞的位置,如果值發生變化。

不幸的是,一些編程語言有時會做壞事與聲明不變的東西。例如,在一些.net語言中,如果通過可修改的引用傳遞一個聲明爲只讀的值類型,編譯器將會而不是拒絕允許這樣的操作,而是複製並傳遞它。這種隱式複製會損害效率,並可能導致意想不到的語義。

1

根據您的語言和編譯器,一個常數可能會生成時內聯&優化。變量可能會消耗堆棧空間,即使它從不改變。

+0

啊,我想這是有道理的。謝謝你澄清:) – Deley

1

通過使常數的值,編譯器可以剛剛替補它。例如,如果您有x/2,編譯器可以計算該值並使用該值,而不必發出代碼來檢索x的值,然後將其除以2.

另外,您不必擔心意外改變價值。例如,在C的語言,你可能會不小心輸入if (x = 2)當你的意思是if (x == 2)這將改變的x的價值,如果它是一個變量。

1

任何維護你的代碼的未來(包括你)就不用環顧四周,看到(如果任何地方)發現一個bug或添加功能,當一個常數改變 - 他們就會知道了蝙蝠的權利它不能被改變。