Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么此代码生成错误C2105而不是C3892?_C++_Visual Studio_Visual C++_Lvalue - Fatal编程技术网

C++ 为什么此代码生成错误C2105而不是C3892?

C++ 为什么此代码生成错误C2105而不是C3892?,c++,visual-studio,visual-c++,lvalue,C++,Visual Studio,Visual C++,Lvalue,IDE:MS Visual studio 2008版本9.0.21022.8 RTM 编译器:Microsoft(R)32位C/C++优化编译器版本 对于80x86,为15.00.21022.08 代码: 编译器希望抛出错误C2105的l值是什么?x是左值,因此诊断消息具有误导性。 这是一个实施质量问题,即一个bug 检测常量的任何例程都会与检查x++中表达式x是否为右值的例程发生冲突 结果是一样的!因此,不太可能有人会非常在意。您可以在MicrosoftConnect上提出这个问题,看看它是否

IDE:MS Visual studio 2008版本9.0.21022.8 RTM

编译器:Microsoft(R)32位C/C++优化编译器版本 对于80x86,为15.00.21022.08

代码:

编译器希望抛出错误C2105的
l值是什么?

x
是左值,因此诊断消息具有误导性。

这是一个实施质量问题,即一个bug

检测
常量的任何例程都会与检查
x++
中表达式
x
是否为右值的例程发生冲突

结果是一样的!因此,不太可能有人会非常在意。您可以在MicrosoftConnect上提出这个问题,看看它是否适用于任何地方,但您可能应该首先在较新版本上测试您的代码,因为2008年是很久以前的事了

值得一提的是,我在Visual Studio 2012 Express中得到了相同的结果;Intellisense澄清说,这是一个“可修改的左值”,它希望:


因为它们在语义上是两种不同的操作?@Abhineet:更好,谢谢。已经发布了澄清问题的新答案。哇……你不是很快吗:)你真是太棒了。我无法控制我的笑声。FWIW 2015也做了同样的事情,但它将intelliSense错误放在相关编译器错误的旁边。
// main.cpp - compiled as cpp file
int main()
{
 const int x = 10;
 x++; // error C2105: '++' needs l-value
 x = x+1; // error C3892: 'x' : you cannot assign to a variable that is const
 return(0);
}