各位前輩,我最近在自學C++prime5,裡面有一段關於常量表達式的概念把我搞混了
裡面有這麼一段關於常量表達式的定義:
常量表達式是指值不會改變並且在編譯的過程中就能得到結果的表達式。顯然,字面值屬於常量表達式....
然後書上關於字面值得解釋是這樣的:
字面值類型一般比較簡單,值也顯而易見,容易得到,就把他們稱為“字面值”類型。算術類型,引用和指針都屬於字面值類。
那我這樣定義:
int a=42;
這個變量a 屬於字面值類型吧?那它不就是一個常量表達式了?
書裡的定義是不是有錯?是不是 字面值常量類型才是常量表達式?
謝謝各位前輩指教
看書要看原版的,中文版的翻譯往往不准確。
這裡說的常量表達式和常量是兩個不同的概念,雖然翻譯成中文都一樣。
我們知道,C++中一個變量、一個數字、一個包含運算符的算式、一個包含等號的算式都可以視作表達式,比如
a
42
a + 42
a = 42
a == 42
a == a + 42
等等,這些都是表達式。
其中42就是一個常量,它也是字面值,你不能改變42。
a = 42
此時a也是一個表達式,但是a是變量,你可以改變a的值。