为了账号安全,请及时绑定邮箱和手机立即绑定

改变固有思维的计算题

改变固有思维的计算题

慕码人8056858 2019-04-13 08:46:45
下面是一道常见的计算题目,最初刚看时,觉得是一个简单的计算题,应该是我学艺不精,得到的结果与在console上得到的不一样。vara=3,b=5;a=(a-(b=(a=a+b)-b));>>0大家感兴趣的可以看看,解释下這道題遠沒有看上去那麼簡單,實際上與直譯器的原理有關。有人說上面那道口算也能算對,那麼看現在這道題:vara=3,b=5;a=a-(b=a=a+b)-b;答案嘛,自己運行去看啦。SomeGotchasinArithmeticExpressionEvaluation:JavaScript
查看完整描述

2 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

楼主的问题可以总结为“子表达式的副作用如果改变表达式其他变量,会发生什么事情?”实际上除了赋值语句以外,子表达式包含++和--、函数调用也可以达到类似效果。另外,函数调用时,一个参数的表达式也可能影响到另一个参数。
问题的答案依赖于参数的求值顺序。有些语言是不在标准中规定求值顺序,因此规范给出的答案是undefinedbehavior,具体的答案依赖于编译器或解释器,如C++11前的C++。至于JavaScript,是严格从左到右求值的(有括号则优先求子表达式的值),因此,只要注意运算符的优先级,并在遇到赋值号时修改变量的值,就得到答案。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 280 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信