为什么const int会改变值

时间:2015-02-15 21:52:16

标签: c++ int const

我开始学习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

现在可以正常运行并给我正确的错误,但有人知道这意味着什么

3 个答案:

答案 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;作为输出,是不正确的。

通过无意中编译不同的程序,或者没有注意到编译失败然后运行现有的可执行文件,您可以轻松获得类似的印象