簡體   English   中英

需要左值作為增量操作數錯誤

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM