执行以下代码片段后,为什么int d 25的值不是26?
int n = 20;
int d = n++ + 5;
Console.WriteLine(d);
答案 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.