作爲程序猿,都應該知道的基礎知識 :
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 這段類似代碼就好理解了。
如果我解決了您的疑問,點個贊,打賞一下,您的打賞是我爲以後寫出更優秀的博客的動力!謝謝。