代码:
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。
答案 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));