问题描述
这里有什么问题。错误是什么意思:左值需要作为增量操作数? (注意:这是一个教科书的例子)
#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)