为什么执行以下代码片段后 int d 的值是 25 而不是 26?
int n = 20;
int d = n++ + 5;
Console.WriteLine(d);
n++
是“后增量运算符”,它仅在其初始值在周围表达式中使用后才增加值。
您的代码相当于:
int d = n + 5;
n = n + 1;
要在值被使用之前++n
递增值,请使用预递增运算符。
因为您需要使用++n
该表达式中的增量值。
看,在表达式树中它没有递增n
,然后在加法中使用该值,因为n++
返回的值n
但为下一个使用的表达式递增它。
但是,++n
实际上将返回n
此表达式的增量值。
因此,n++ + 5
收益率25
而++n + 5
收益率26
。
n++
表示在运算后执行加法,所以首先 d 将等于n+5
然后n
将被提升。
因为n++
将首先分配值,并在迭代完成后递增,这就是它给出 25 的原因
因此,
int d= n++ + 5;
被解释为
int d = n + 5;
因为你使用的是 Postfix express
int d = n++ + 5;
其中编译器首先为 d 赋值,但随后
int d = ++n + 5;
你会得到 d 的值 26
++
:post 增量运算符。
postfix ++ 运算符的结果是操作数的值。得到结果后,操作数的值递增
因此,
int d= n++ + 5;
被解释为
int d = n + 5;
执行上述解释后。n
递增 1。