簡體   English   中英

C#自動增量運算符錯誤:操作數在語法上是不正確的?

[英]C# auto-increment operator error: Operand is not syntactically correct?

我正在查看文檔,並試圖了解操作符的實際工作方式。

遞增運算符(++)將其操作數遞增1.遞增運算符可以出現在其操作數之前或之后: ++variablevariable++

第一種形式是前綴增量操作。 操作的結果是操作數增加后的值。

第二種形式是后綴增量操作。 操作的結果是操作數增加之前的值。

我希望以下操作返回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.

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