我开始学习c ++,并且认为通过输入const意味着值不会改变,但我编写了以下代码:
#include<iostream>
int main()
{
const int a = 1;
a += 1;
std::cout << a << std::endl;
return 0;
}
并打印出2,而我认为它会给我一个更改const int值的错误。 我使用MSVS作为我的编译器
编辑:我收到编译器警告说C4530:使用了C ++异常处理程序,但未启用展开语义,请指定/ EHsc现在可以正常运行并给我正确的错误,但有人知道这意味着什么
答案 0 :(得分:3)
无法使用GNU GCC 4.8编译此程序:
alioth% g++ x.cpp
x.cpp: In function ‘int main()’:
x.cpp:6:7: error: assignment of read-only variable ‘a’
a += 1;
你的编译器坏了或你做错了(比如编译不同的项目)。
答案 1 :(得分:0)
此程序无法在VS2013上编译:
1>------ Build started: Project: SOTesting, Configuration: Release Win32 ------
1> Source.cpp
1>Source.cpp(6): error C3892: 'a' : you cannot assign to a variable that is const
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========`
答案 2 :(得分:0)
发布的代码:
#include<iostream>
int main()
{
const int a = 1;
a += 1;
std::cout << a << std::endl;
return 0;
}
声明此代码编译和制作&#34; 2&#34;作为输出,是不正确的。
通过无意中编译不同的程序,或者没有注意到编译失败然后运行现有的可执行文件,您可以轻松获得类似的印象。