簡體   English   中英

C#中的前后遞增/遞減運算符

[英]Pre and post increment/decrement operators in C#

在C#中,是否有人知道為什么以下將編譯:

int i = 1;
++i;
i++;

但這不會編譯?

int i = 1;
++i++;

(編譯器錯誤:增量或減量運算符的操作數必須是變量,屬性或索引器。)

你在另一個結果上運行一個操作數,增量/減量的結果是一個值 - 你不能對一個值使用遞增/遞減它必須是一個可以設置的變量。

出於同樣的原因你不能說

5++;

要么

f(i)++;

函數返回 ,而不是變量。 增量運算符也返回值,但不能應用於值。

我的猜測是++ i返回一個整數值類型,然后你嘗試應用++運算符。 看到你無法寫入值類型(想想0 ++,如果這有意義),編譯器將發出錯誤。

換句話說,這些語句被解析為這個序列:

++i  (i = 2, returns 2)
2++  (nothing can happen here, because you can't write a value back into '2')

我的猜測:避免這種丑陋和不必要的結構。 它還將使用2個操作(2x INC)而不是1個(1x ADD 2)。

是的,我知道......“但是我想要增加兩倍,而且我是一個33.3 g33k!”

好吧,不要成為一個極客並寫下一些看起來不像是無意的錯誤的東西,比如:

i += 2;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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