C++ Help: Error: lvalue required as increment operand

C++ Help: Error: lvalue required as increment operand

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

    #include <iostream>
    using namespace std;

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

    return 0;
}

++x称为前置自增运算符,x++称为后自增运算符。 两者都需要一个可修改的 'lvalue' 变量作为操作数。在这种情况下 x 是 'lvalue'.

如果你有一个代码 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)