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