[英]C# auto-increment operator error: Operand is not syntactically correct?
我正在查看文檔,並試圖了解操作符的實際工作方式。
遞增運算符(++)將其操作數遞增1.遞增運算符可以出現在其操作數之前或之后:
++variable
和variable++
。第一種形式是前綴增量操作。 操作的結果是操作數增加后的值。
第二種形式是后綴增量操作。 操作的結果是操作數增加之前的值。
我希望以下操作返回3
,但它不編譯,並聲明運算符必須是變量,屬性或索引器:
int x = 0;
Console.WriteLine(x++ ++ ++);
/*Expected output: 3*/
為什么這是錯的? 我是否應該假設x++
不為下一個++
運算符返回相同類型的值?
從草案C#6語言規范 :
后綴增量或減量操作的操作數必須是分類為變量,屬性訪問或索引器訪問的表達式。 操作的結果是與操作數相同類型的值。
x
是一個變量,但x++
不是“變量,屬性訪問或索引器訪問”。
現在,讓我們想象一個這樣的后綴增量運算符調用合法的世界。 給定一個int x = 42;
, x++
x
增加到43,但它的計算結果為42.如果x++ ++
是合法的,它將適用於x++
,這不是你想要的(它會增加臨時值,而不是x
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.