原鏈接在這里 :<題目連接>
a+++a等同于(a++)+a,而 a+a++等同于a+(a++),二者結(jié)果為什么不一樣?
簡而言之就是處理順序不一樣
a+++a的入棧會被編譯器分解成(a++)+a ,入棧的時候,編譯器首先識別a++,這時候a自增。值和原來的相比較就是a(新)=a(舊)+1
而下一個入棧的是a,此時的a已經(jīng)完成了自增,是a(新)
也就是說
a+++a=(a++)+a=(a(舊)+1)+a(新)=(a(舊)+1)+(a(舊)+1)=2a(舊)+2
那看一下另一個
a+a++的入棧被編譯器分解成a+(a++),入棧的時候,編譯器先識別的是a,然后再識別a++。
a+a++=a+(a++)=a(舊)+(a(舊)+1)=2a(舊)+1
現(xiàn)在我們看下2個結(jié)果
一個是2a(舊)+2
另一個是2a(舊)+1
當(dāng)然不一樣。