highlight.js

星期二, 7月 17, 2012

詞辨:constant 與 literal

閱讀原文書時, 常會被 literal 這個詞搞混, 其實 literal 的意思很簡單, 就是將某個值使用文字直接表示出來, 這段文字就稱為 literal。舉例來說, 如果有這一行程式:
int a = 20;
這個 "20" 就稱為是一個 literal, 也就是在程式中直接用文字描述 20 這個值, 因為如此, 我會建議將 literal 譯為「字面值」, 取其從字面就可以得知資料值之意。

有些中文書會把 literal 稱為「常數」, 這基本上就誤會了兩個詞彙的意思。constant 指的是某個東西具有不變的值, 例如圓週率, 大家都知道的它的值是固定不變的, 這時候我們會說「圓週率是一個常數, 它的值是 3.14159.......」。在程式語言中, 常數 (constant) 就是指一個具名但內容不會變動的資料, 例如:
const int pi = 3.1415976;
這時我們說 pi 是個常數, 它的值為 3.1415976, 而非 3.1415976 是個常數。這就像是以下這段程式:
int a = 30;
你會說 a 是一個變數, 而不是 30 是個變數。

3 則留言:

LungZeno 提到...

我看過一些程式語言的 bytecode 編譯器原始碼, literal 是預先存放在叫 constant 的地方的,我記得好像 bytecode 也是把 literal 叫 constant ,至於原因和理論我就不認識了。

在語義層面, literal 和 constant 兩者在我看過的所有書本所教確實都是不同的。

我還在學習程式設計,有錯盡請指正。

meebox 提到...

literal 在程式中會有對應的 constant, 所以把編譯過的 literal 放在 constant 區也很合理啊!

肥滋滋 (tsungjung411@gmail.com, tj_tsai) 提到...

@meebox

常數 v.s. 字面值
const int pi = 3.1415976;
pi 是常數, 3.1415976 是字面值 (literal)


變數 v.s. 字面值
int a = 30;
a 是變數, 30 是字面值 (literal)