首页 > 解决方案 > 算子的预增量

问题描述

我不明白为什么 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?
}
    }
}`

标签: c#

解决方案


将后增量和前增量想象为函数:

 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为等于它在增加之前的值

推荐阅读