执行`n = n--`语句后n值未发生预期变化的原因是什么?
n = n-- 运行结果为5的原因分析
这里的行为以Java语言为基准(不同编程语言对同类表达式的定义可能存在差异),我们可以拆解n = n--的完整执行流程:
- 首先确定赋值运算符
=左侧的操作数:定位到要赋值的目标是变量n的内存引用 - 计算赋值运算符右侧的
n--表达式:- 第一步,取出
n当前的存储值5,作为整个后置自减表达式的返回结果 - 第二步,对
n执行自减操作,此时n的临时值变为4
- 第一步,取出
- 执行赋值操作:将右侧表达式的返回结果
5写入左侧定位好的n的内存地址,直接覆盖了上一步临时生成的4
所以最终变量n的结果为5,而不是预期的4。
注意:这类在同一行代码中对同一个变量多次执行读写的写法属于典型的迷惑性代码,实际开发中严禁使用。C/C++等语言中同类写法甚至属于未定义行为,运行结果完全取决于编译器实现。
内容的提问来源于stack exchange,提问作者LT_ichinen
相关产品推荐
相关产品推荐

