![](/img/trans.png)
[英]Why does C# implement pre/post-increment/decrement operators for floating point types?
[英]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.