执行n ++后的奇怪答案

时间:2013-10-15 12:17:38

标签: c#

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

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

Console.WriteLine(d);

6 个答案:

答案 0 :(得分:10)

n++是“后增量运算符”,只有在> 后,才会在周围表达式中使用>值。

您的代码相当于:

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

要在> 之前增加值,请使用预增量运算符++n

答案 1 :(得分:3)

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

请参见表达式树,它不会递增n,然后在添加中使用该值,因为n++返回n的值,但会为下一个使用的表达式递增它。 / p>

但是,++n实际上会为此表达式返回n的递增值。

因此,n++ + 5会产生25,而++n + 5会产生26

答案 2 :(得分:2)

n++表示在操作后执行adition,因此首先d将等于n+5,然后n将被提升。

答案 3 :(得分:2)

因为n++将首先分配值,并且在迭代完成之后,它将增加它给出25的原因

因此,

int d= n++ +  5; 

被解释为

int d = n +  5;

答案 4 :(得分:1)

因为您正在使用Postfix express

int d = n++ + 5;

其中编译器首先将值赋给d,但在下面的

int d = ++n + 5;

你的价值是26

答案 5 :(得分:1)

++:post increment operator。

post fi x ++运算符的结果是操作数的值。结果之后 获得后,操作数的值递增

因此,

int d= n++ +  5; 

被解释为

int d = n +  5;

执行上述解释后。 n增加1.