我不明白为什么帖子增加后,i和k的值在行号19,20中仍为5?
尽管帖子增加了,但i的值仍然是5。
`using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace Increment
{
class Program
{
static void Main(string[] args)
{
int i = 5;
int j = 10;
Console.WriteLine("before incrementing{0}",i);
i=i++;
Console.WriteLine("after incrementing {0}",i); //i=5?
int k = i;
Console.WriteLine("after incrementing i and assign {0}", k);//K=5?
}
}
}`
答案 0 :(得分:5)
将后递增和前递增想象为函数:
int PreIncrement(ref int i)
{
i = i + 1;
return i;
}
int PostIncrement(ref int i)
{
int valueBefore = i;
i = i + 1;
return valueBefore;
}
在这种情况下
i = i++;
将等同于
i = PostIncrement(ref i);
您正在按以下顺序执行两项操作:
i
i
设置为等于其递增之前的值答案 1 :(得分:0)
++
的{{3}}有相当清楚的示例。 “ x++
的结果是操作前x
的值,如下面的示例所示……。”
这意味着无论您在表达式中使用x++
还是要获取初始值,即在x
递增之前。因此,如果x
为4
,则表达式中将使用值4
,并且x
将递增为5
。如果将表达式的值分配给变量,则该变量将设置为4
。您恰好选择了x
作为分配目标,因此覆盖了后递增的值。