为什么给定代码的输出为1,13,3?

时间:2019-09-19 11:55:27

标签: c#

代码:

int[] arr = { 1, 2, 3 };
int i = 1;
arr[i++] = arr[i] + 10; 
Console.WriteLine(String.Join(",", arr));

根据我的理解,第三行可以分为两个语句,即

  • arr[i] = arr[i] + 10 => arr[1] = arr[1] + 10 => arr[1] = 2 + 10 => arr[1] = 12
  • i++

输出应为

  

1,12,3

但是,输出为

  

1,13,3。

2 个答案:

答案 0 :(得分:2)

arr[i++]i用作1,因此它变成arr[1]。然后++递增i,因此下次引用它时,其值已经是2。因此,该行可以重写为:

arr[1] = arr[2] + 10;

这是13的来源。

答案 1 :(得分:1)

这是因为您正在重用i的值

尝试此=>在递增之前添加值

int[] arr = { 1, 2, 3 };
int i = 1;
int result = arr[i] + 10; 
arr[i++] = result;
Console.WriteLine(String.Join(",", arr));