真的是什么?定义

时间:2017-12-30 15:33:22

标签: c++ c++11 const

我对常数感到有些困惑。它在“使用C ++编程原理和实践”一书中说过,你不能给常数赋予新的价值。

constexpr int max = 17;
int val = 19;
max+2

但这段代码令我困惑。 max + 2,这意味着max将有一个新值,19,那么真正的常量是什么?你怎么能把2添加到常数?

3 个答案:

答案 0 :(得分:3)

max + 2并不意味着max会有新值。超过17 + 2意味着17将具有新值。 max + 2是一个表达式,其值为19.在计算表达式之后,max仍然等于17.

答案 1 :(得分:1)

max+2未以任何方式修改max。它只是一个表达式,其值为max2。也许你和max+=2混淆了你实际上无法做到的事情。如果在代码的最后一行之后检查max的值,它仍然是17。

答案 2 :(得分:0)

您可以在生成新值的表达式中使用常量。换句话说,max + 2由两个常量(max2)组成,它们被加在一起,以产生值19int val = 19;也使用了一个真常量19(整数文字,这是编程中常量的一种形式)。 val显然ISN&T; T常量,稍后在代码中执行val += 9;val = 32;是有效的。如果您稍后尝试在代码中执行max = 7;,则无法编译[除非编译器已损坏]