a+++a等同于(a++)+a,而 a+a++等同于a+(a++),二者結(jié)果為什么不一樣?

原鏈接在這里 :<題目連接>

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)然不一樣。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容