将增量运算符应用于常数变量时,为什么会出现编译器错误

时间:2018-11-10 13:12:56

标签: c++

如果我声明一个常量变量

int const n=100; cout<<n+1<<endl;

控制台将值显示为101

但是当我编写这样的代码时:

int const n=100;
n++;
cout<<n<<endl;

有一个compile time error

main.cpp: In function 'int main()':
main.cpp:6:5: error: increment of read-only variable 'n'

第二种情况与第一种情况不同吗?

2 个答案:

答案 0 :(得分:2)

  

第二种情况与第一种情况不同吗?

是的,它们根本不同。

int const n=100; 
n++;

增量运算符显然不能申请const(ant)变量,因为const关键字阻止在初始定义后对其进行更改。这就是发出编译器错误的原因。

在另一种情况下,变量本身不会更改,但是在将其传递到operator<<()的{​​{1}}时会创建另一个临时值。

答案 1 :(得分:1)

在第一种情况下,要求编译器计算将常量添加到整数的输出。这不会导致任何错误。

在第二种情况下,要求编译器更改常量的值。这是非法的,并会导致编译器错误。