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 是個變數。
我看過一些程式語言的 bytecode 編譯器原始碼, literal 是預先存放在叫 constant 的地方的,我記得好像 bytecode 也是把 literal 叫 constant ,至於原因和理論我就不認識了。
回覆刪除在語義層面, literal 和 constant 兩者在我看過的所有書本所教確實都是不同的。
我還在學習程式設計,有錯盡請指正。
literal 在程式中會有對應的 constant, 所以把編譯過的 literal 放在 constant 區也很合理啊!
回覆刪除@meebox
回覆刪除常數 v.s. 字面值
const int pi = 3.1415976;
pi 是常數, 3.1415976 是字面值 (literal)
變數 v.s. 字面值
int a = 30;
a 是變數, 30 是字面值 (literal)