[英]lvalue required as increment operand error
#include <stdio.h>
int main()
{
int i = 10;
printf("%d\n", ++(-i)); // <-- Error Here
}
++(-i)
有什么问题? 请说清楚。
-i
生成一个临时文件,您不能将++
应用于临时文件(作为右值表达式的结果生成)。 Pre increment ++
要求它的操作数是左值, -i
不是左值,所以你会得到错误。
++
运算符递增一个变量。 (或者,更准确地说,一个左值——可以出现在赋值表达式左侧的东西)
(-i)
不是变量,因此增加它没有意义。
您不能增加没有 identity的临时值。 您需要将其存储在某些东西中以增加它。 您可以将左值视为可以出现在表达式左侧的东西,但最终您需要将其视为具有标识但不能移动的东西(C++0x 术语)。 这意味着它有一个身份,一个引用,指的是一个 object,你想保留的东西。
(-i) 没有身份,所以没有什么可以引用它。 没有什么可以引用它,就没有办法在其中存储一些东西。 您不能引用 (-i),因此,您不能增加它。
试试 i = -i + 1
#include <stdio.h>
int main()
{
int i = 10;
printf("%d\n", -i + 1); // <-- No Error Here
}
试试这个:
#include <stdio.h>
int main()
{
int i = 10;
printf("%d\n", (++i) * -1);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.