C++ 帮助:错误:左值需要作为增量操作数

问题描述

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

    #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++ 称为后增量。 两者都需要一个可修改的“左值”变量作为操作数。在这种情况下,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)