作为程序猿,都应该知道的基础知识 :
a++是先执行表达式后再自增,执行表达式时使用的是a的原值。
++a是先自增再执行表达示,执行表达式时使用的是自增后的a。
但在JS、JAVA、PHP中就那么简单吗?
1. JS
2. JAVA
3. PHP
凭借自己所学,在不测试的情况下,你能给出答案吗?
第一次看见这个问题的时候,想当然的认为答案是:10。但残酷的事实告诉我,答案是:1。当时面对这个结果我是无法接受的,网上疯狂搜索这个答案的解释。但是没有很容易理解的解释,我就根据自己的知识水平,重新推导这个过程。
首先拿JS举例
右边很直观的告诉我们结果为1.但是这段代码只告诉我们结果,并没有解释原因。why?
下面我们推倒一下,上面代码执行的顺序:
1) a=a++可以拆分为 var b = a++、a=b;因为++比=运算级别高。
2)a++ 是先取值后自增的,所以b=1, 这个时候a=a+1 => a= 2。
3)执行a=b运算,a=1。
4)所以无论经过多少次循环,a恒等于1。
没毛病。
这个问题解决了,那么JAVA、PHP 这段类似代码就好理解了。
如果我解决了您的疑问,点个赞,打赏一下,您的打赏是我为以后写出更优秀的博客的动力!谢谢。