“叶小凡,现在你把这道题解释一下吧。”林元青看向叶小凡,稳重但不缺威严地说到。
“是。”弟子面朝着林元青作揖,然后抬起兄,缓缓到来。
“这道题看似复杂,但只要一步一步细细分开来,还是有迹可循地。”
var a = 1; var b; var sum = (b = a++ + --a) + a-- + b++ ;
“首先,变量b只是定义了一下,没有赋值,在运行第三句话之前b的值就是undefined,表示未定义。”
“嗯,继续说。”
“弟子遵命,接下来就是第三行代码。这一行代码比较长,我试着把它拆分出来。首先是这一句。”
b = a++ + --a;
“很明显,这是一个赋值语句,a++是后置++,那么就先把a的值放进去运算。这个时候,a的值还是1。但是,一旦a++结束,a的值就变化为2了。换句话说,当执行到后面的—a的时候,a的值就是2。”
“重点来了,又因为—a是前置–,意思就是先 – 然后放进式子中去运算。刚才我们说到a的值已经是2了,那么—a在这里就变回了1。因此,这句话b最终的值就是 1 + 1 = 2。”
“我这边用了括号,括号是为了让变量b的赋值语句先进行运算。所以,b的值在后面参与运算的时候就已经是2了。刚才a最后的值是1,那么后面的a—因为是后置–,参与运算的值还是1。因此,(b = a++ + --a) + a—的结果就是3,a—过后变成了0,不过后面和a没有啥关系了,那么就不管a。最后一个是b++,由于是后置++,所以b变量参与运算的值还是2。那么,最终的答案当然就是3+2=5啦。”叶小凡轻松地说着,似乎根本不觉得这是什么困难的事情。
寂静,一片寂静。
就连对面的弟子也听得津津有味,场外的一众大弟子们个个屏住了呼吸,看着叶小凡。似乎,自己还真的小瞧了这个刚进山门的小师弟。罗丹双眼死死盯住叶小凡,脸色从未有过的凝重。
“嗯,不错,你理解的很好。”林元青不吝称赞,一种欣慰的感觉油然而生。
第一场,自然是叶小凡获胜。