繁体   English   中英

需要左值作为增量操作数错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM