关于常量表达式的新手问题

各位前辈,我最近在自学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的值。

常量是指由const修饰的变量符号,它表示不可变的变量,这是常量。和字面值中说的常量不是一回事。

const是关键字,表示对应的变量是不会改变值的。
而值本身是字面值。