[英]C# post increment and pre increment
我有時會對速記增量操作感到困惑。
因為當我在BASIC中進行小編程時,我得到了一些如何堅持使用a = a + 1,這是一種長期痛苦的方式,即“獲取當前值,為其添加1,然后將新值存儲回'。
1] a = a +1 ;
2] a++ ;
3] ++a;
4] a +=1;
[1]和[4]在功能上有不同的表示法,對嗎?
由於增量符號++之前和之后的事實,2]和3]的工作方式完全不同。 對?
我可以安全地假設下面的內容嗎?
int f(int x){ return x * x;}
y = f(x++) -> for x =2, f(x) = x^2
f(x) ======> y= 2^2 =4
x=x+1; ======> x= 2+1 = 3
y = f(++x) -> for x =2, f(x) = x^2
x=x+1 ===========> x = 2+1 = 3
f(x) ===========> y =3^2 = 9
區別在於運營商返回的內容:
post -increment運算符“a plus plus”添加一個,並返回舊值:
int a = 1;
int b = a++;
// now a is 2, b is 1
pre -increment運算符“plus plus a”添加一個,並返回新值:
a = 1;
b = ++a;
// now a is 2 and b is 2
首先,你應該仔細閱讀這個答案:
並仔細閱讀此博客文章:
http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-assignment-part-one.aspx
請注意,該帖子的第二部分是愚人節的笑話,所以不要相信它說的任何內容。 第一部分是嚴肅的。
那些應該回答你的問題。
當你只有一個普通的局部變量時,語句為x++; ++x; x = x + 1; x += 1;
x++; ++x; x = x + 1; x += 1;
基本上都是一樣的東西。 但是一旦你偏離了普通的局部變量,事情變得更加復雜。 這些行動對他們來說是微妙的。
1],3]和4]在功能上是相同的 - a
增加1,整個表達式的值是a
的新值。
2]與其他人不同。 它也會增加a
,但表達式的值是a
的前一個值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.