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

#include  int main() { int i = 10; printf("%d\n", ++(-i)); // <-- Error Here } 

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

-i生成一个临时的,你不能在临时(由于rvalue表达式生成)上应用++ 。 预增量++要求其操作数为左值, -i不是左值,因此您得到错误。

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

(-i)不是变量,因此增加它是没有意义的。

您不能增加没有标识的临时文件。 你需要将它存储在某个东西中以增加它。 您可以将l值视为可以出现在表达式左侧的内容,但最终您需要根据具有标识但无法移动的内容来考虑它(C ++ 0x术语) )。 意味着它有一个标识,一个引用,指的是一个对象,你想要保留的东西。

(-i)没有身份,因此没有任何内容可以引用它。 没有任何东西可以指代它,没有办法存储其中的东西。 你不能引用(-i),因此,你不能增加它。

试试i = -i + 1

 #include  int main() { int i = 10; printf("%d\n", -i + 1); // <-- No Error Here } 

试试这个:

 #include  int main() { int i = 10; printf("%d\n", (++i) * -1); }