C#后增量和前增量

时间:2013-04-12 14:13:22

标签: c# .net

我有时会对速记增量操作感到困惑。

因为当我在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

3 个答案:

答案 0 :(得分:18)

区别在于操作员返回的内容:

帖子 -increment运算符“a plus plus”添加一个,并返回值:

int a = 1;
int b = a++;
// now a is 2, b is 1

pre -increment运算符“plus plus a”添加一个,并返回 new 值:

    a = 1;
    b = ++a;
// now a is 2 and b is 2

答案 1 :(得分:7)

首先,您应该非常仔细地阅读

What is the difference between i++ and ++i?

非常仔细地阅读

这篇博文

http://blogs.msdn.com/b/ericlippert/archive/2011/03/29/compound-assignment-part-one.aspx

请注意,该帖子的第二部分是愚人节的笑话,所以不要相信它说的任何内容。第一部分是严肃的。

那些应该回答你的问题。

当你只有一个普通的局部变量时,语句x++; ++x; x = x + 1; x += 1;基本上都是一样的。但是一旦你偏离了普通的局部变量,事情变得更加复杂。这些行动对他们来说是微妙的。

答案 2 :(得分:1)

1],3]和4]在功能上相同 - a加1,整个表达式的值是a new 值。

2]与其他人不同。它也会增加a,但表达式的值是a之前值。