Вы не можете увеличить временное значение , у которого нет идентификатора .Вы должны хранить это в чем-то, чтобы увеличить его.Вы можете думать о l-значении как о чем-то, что может появиться в левой части выражения, но в конечном итоге вам нужно будет думать об этом с точки зрения того, что имеет идентичность, но не может быть перемещено (терминология C ++ 0x).Это означает, что у него есть идентичность, ссылка, ссылка на объект, то, что вы хотели бы сохранить.
(- i) не имеет НИКАКОЙ идентичности, поэтому нет ничего, что могло бы на него ссылаться.Не имея к чему ссылаться, невозможно что-то в нем хранить.Вы не можете ссылаться на (-i), поэтому вы не можете увеличивать его.
try i = -i + 1
#include <stdio.h>
int main()
{
int i = 10;
printf("%d\n", -i + 1); // <-- No Error Here
}