我对常数感到有些困惑。它在“使用C ++编程原理和实践”一书中说过,你不能给常数赋予新的价值。
constexpr int max = 17;
int val = 19;
max+2
但这段代码令我困惑。 max + 2,这意味着max将有一个新值,19,那么真正的常量是什么?你怎么能把2添加到常数?
答案 0 :(得分:3)
max + 2
并不意味着max
会有新值。超过17 + 2
意味着17将具有新值。 max + 2
是一个表达式,其值为19.在计算表达式之后,max
仍然等于17.
答案 1 :(得分:1)
max+2
未以任何方式修改max
。它只是一个表达式,其值为max
加2
。也许你和max+=2
混淆了你实际上无法做到的事情。如果在代码的最后一行之后检查max的值,它仍然是17。
答案 2 :(得分:0)
您可以在生成新值的表达式中使用常量。换句话说,max + 2
由两个常量(max
和2
)组成,它们被加在一起,以产生值19
。 int val = 19;
也使用了一个真常量19
(整数文字,这是编程中常量的一种形式)。 val
显然ISN&T; T常量,稍后在代码中执行val += 9;
或val = 32;
是有效的。如果您稍后尝试在代码中执行max = 7;
,则无法编译[除非编译器已损坏]