6

为什么执行以下代码片段后 int d 的值是 25 而不是 26?

int n = 20;
int d = n++ + 5;

Console.WriteLine(d);
4

6 回答 6

11

n++是“后增量运算符”,它仅其初始值在周围表达式中使用后才增加值。

您的代码相当于:

int d = n + 5;
n = n + 1;

要在值被使用之前++n递增值,请使用预递增运算符。

于 2013-10-15T12:19:38.047 回答
3

因为您需要使用++n该表达式中的增量值。

看,在表达式树中它没有递增n,然后在加法中使用该值,因为n++返回的值n但为下一个使用的表达式递增它。

但是,++n实际上将返回n此表达式的增量值。

因此,n++ + 5收益率25++n + 5收益率26

于 2013-10-15T12:18:03.690 回答
2

n++表示在运算后执行加法,所以首先 d 将等于n+5然后n将被提升。

于 2013-10-15T12:19:13.827 回答
2

因为n++将首先分配值,并在迭代完成后递增,这就是它给出 25 的原因

因此,

int d= n++ +  5; 

被解释为

int d = n +  5;
于 2013-10-15T12:19:30.750 回答
1

因为你使用的是 Postfix express

int d = n++ + 5;

其中编译器首先为 d 赋值,但随后

int d = ++n + 5;

你会得到 d 的值 26

于 2013-10-15T12:20:37.547 回答
1

++:post 增量运算符。

postfix ++ 运算符的结果是操作数的值。得到结果后,操作数的值递增

因此,

int d= n++ +  5; 

被解释为

int d = n +  5;

执行上述解释后。n递增 1。

于 2013-10-15T12:20:57.150 回答