需要lvalue作为增量操作数错误

lvalue required as increment operand error

本文关键字:操作数 错误 lvalue 需要      更新时间:2023-10-16
#include <stdio.h>
int main()
{
   int i = 10;
   printf("%dn", ++(-i)); // <-- Error Here
}

++(-i)出了什么问题?请澄清。

-i生成一个临时的,并且不能将++应用于临时的(作为右值表达式的结果生成的(。预增++要求其操作数为左值,-i不是左值,因此会出现错误。

++运算符递增一个变量。(或者,更准确地说,左值,可以出现在赋值表达式的l左侧(

(-i)不是一个变量,所以增加它是没有意义的。

您不能对没有标识的临时进行增量。你需要将其存储在某个东西中以增加它。你可以把l值看作是可以出现在表达式左侧的东西,但最终你需要把它看作是有标识但不能移动的东西(C++0x术语(。这意味着它有一个身份,一个参考,指的是一个物体,你想保留的东西。

(-i(没有身份,所以没有什么可以引用的。没有任何可以引用的,就没有办法在其中存储一些东西。你不能引用(-i(,因此,你不能递增它。

try i=-i+1

#include <stdio.h>
int main()
{
   int i = 10;
   printf("%dn", -i + 1); // <-- No Error Here
}

试试这个:

#include <stdio.h>
int main()
{
   int i = 10;
   printf("%dn", (++i) * -1);
}