lvalue required as increment operand error

筅森魡賤 提交于 2019-11-28 00:09:19

-i generates a temporary and you can't apply ++ on a temporary(generated as a result of an rvalue expression). Pre increment ++ requires its operand to be an lvalue, -i isn't an lvalue so you get the error.

The ++ operator increments a variable. (Or, to be more precise, an lvalue—something that can appear on the left side of an assignment expression)

(-i) isn't a variable, so it doesn't make sense to increment it.

Lee Louviere

You can't increment a temporary that doesn't have an identity. You need to store that in something to increment it. You can think of an l-value as something that can appear on the left side of an expression, but in eventually you'll need to think of it in terms of something that has an identity but cannot be moved (C++0x terminology). Meaning that it has an identity, a reference, refers to an object, something you'd like to keep.

(-i) has NO identity, so there's nothing to refer to it. With nothing to refer to it there's no way to store something in it. You can't refer to (-i), therefore, you can't increment it.

try i = -i + 1

#include <stdio.h>

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

Try this instead:

#include <stdio.h>

int main()
{
   int i = 10;
   printf("%d\n", (++i) * -1);
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!