【问题标题】:C++ Help: Error: lvalue required as increment operandC++ 帮助:错误:需要左值作为增量操作数
【发布时间】:2021-05-11 01:37:11
【问题描述】:

这里有什么问题。错误是什么意思:需要左值作为增量操作数? (注意:这是一个教科书示例)

    #include <iostream>
    using namespace std;

   int main()
  {
    int num1 = 0, num2 = 10, result;
    
    num1++;
    
    result = ++(num1 + num2);
    
    cout << num1 << " " << num2 << " " << result;

    return 0;
}

【问题讨论】:

  • 除非你的书用它作为错误的例子,否则这本书就坏了。

标签: c++ compiler-errors lvalue pre-increment operands


【解决方案1】:

++x 称为前增量运算符,而 x++ 称为后增量运算符。 两者都需要一个可修改的“左值”变量作为操作数。在这种情况下,x 是“左值”。

如果您有一个代码y = ++x,它的语义含义与

x = x + 1;
y = x;

所以这个特定的代码++(num1 + num2)实际上是在出错,因为num1 + num2不是一个有效的可修改变量,result = ++(num1 + num2)的语义是:

num1 + num2 = (num1 + num2) + 1; // this is invalid
result = num1 + num2;

您可以将其修复为:

int x = num1 + num2;
result = ++x;

或者更短的版本,产生相同的结果:

++(result = num1 + num2)

【讨论】:

    猜你喜欢
    • 2011-09-07
    • 2020-10-06
    • 2022-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 2017-01-10
    • 2014-04-07
    相关资源
    最近更新 更多