gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 21:15:35 24 4
gpt4 key购买 nike

IDE: MS Visual studio 2008 Version 9.0.21022.8 RTM

Compiler: Microsoft (R) 32-bit C/C++ Optimizing Compiler Version15.00.21022.08 for 80x86

代码:

// 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);
}

编译器期望抛出错误 C2105 的 l-value 是什么?

最佳答案

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

这是实现质量问题,即错误。

无论检测 const 的例程都与检查 x++ 中的表达式 x 不是右值的例程混淆。

最后的结果是一样的!所以不太可能有人非常关心。您可以在 Microsoft Connect 上提出这个问题并查看它是否会出现任何问题,但您可能应该首先在较新版本上测试您的代码,因为 2008 年是很久以前的事了。

不管怎样,我在 Visual Studio 2012 Express 中得到了相同的结果; Intellisense 阐明了它所希望的“可修改 左值”:

Screenshot of the result in VS2012

关于c++ - 为什么此代码生成错误 C2105 而不是 C3892?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37322325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com