C#赋值左侧数组索引后置自增的代码执行逻辑与结果解析
C#代码执行结果解释
int[] array = new int[]{ 1, 2, 3 }; int i = 1; array[i++] = array[i]+5; var result = string.Join(",", array); Console.WriteLine(result);
第三行代码执行流程拆解
C# 中所有表达式的求值顺序固定为从左到右,赋值运算符=的执行规则为:先计算左操作数的存储位置,再计算右操作数的最终值,最后将右值写入左操作数对应的存储位置。按照这个规则,array[i++] = array[i]+5的执行步骤如下:
- 第一步:计算左操作数
array[i++]的存储位置- 处理后置自增运算符
i++:后置自增的规则是先返回变量的原始值,再执行自增操作。此时i的初始值为1,所以取索引值1,之后i立刻自增为2。 - 最终确定左操作数对应的是数组的
array[1]存储位置。
- 处理后置自增运算符
- 第二步:计算右操作数
array[i] + 5的结果- 此时i已经完成自增,值为2,所以
array[i]对应array[2],取值为3。 - 计算
3 + 5得到结果8。
- 此时i已经完成自增,值为2,所以
- 第三步:执行赋值操作
- 将右操作数的结果8,写入第一步确定的
array[1]存储位置。
- 将右操作数的结果8,写入第一步确定的
结果说明
执行完第三行代码后,数组三个元素的状态为:
- array[0]:未被修改,保持初始值1
- array[1]:被赋值为8
- array[2]:未被修改,保持初始值3
最终拼接输出的结果就是1,8,3。
内容的提问来源于stack exchange,提问作者Hgrbz
相关产品推荐
相关产品推荐

