int a =10; a+=a-=a*=a;
???
上面的兩句,在JAVA與C++中有不一樣的表現(xiàn)。它們的結(jié)果一個(gè)是-80,一個(gè)是0。是JAVA中是0,還是C++中是0,你知道嗎?
在實(shí)驗(yàn)知道結(jié)果后,很容易解釋。差別在于:右邊的=運(yùn)算完以后,前面的=左邊的變量值是否發(fā)送了變化 。
但是深層的原因是怎么回事?我反正是不太了解,我是和一要好的同學(xué)閑聊時(shí)發(fā)現(xiàn)這樣的問(wèn)題的,希望有人能比較徹底的講解一下。
注:修改成a+=(a-=(a*=a));結(jié)果也沒有變化,可見不關(guān)運(yùn)算順序,及運(yùn)算符結(jié)合的問(wèn)題
?????????C++我用的是TruboC++,防止可能不同的編繹器實(shí)現(xiàn)不一樣照成的爭(zhēng)吵。
????????當(dāng)然開發(fā)中,要是有人寫出這樣的代碼肯定要被人罵.但是從語(yǔ)言的比較來(lái)說(shuō),或者是出于對(duì)語(yǔ)言的細(xì)節(jié)的學(xué)習(xí).上面的代碼還是很有意思的.
???
上面的兩句,在JAVA與C++中有不一樣的表現(xiàn)。它們的結(jié)果一個(gè)是-80,一個(gè)是0。是JAVA中是0,還是C++中是0,你知道嗎?
在實(shí)驗(yàn)知道結(jié)果后,很容易解釋。差別在于:右邊的=運(yùn)算完以后,前面的=左邊的變量值是否發(fā)送了變化 。
但是深層的原因是怎么回事?我反正是不太了解,我是和一要好的同學(xué)閑聊時(shí)發(fā)現(xiàn)這樣的問(wèn)題的,希望有人能比較徹底的講解一下。
注:修改成a+=(a-=(a*=a));結(jié)果也沒有變化,可見不關(guān)運(yùn)算順序,及運(yùn)算符結(jié)合的問(wèn)題
?????????C++我用的是TruboC++,防止可能不同的編繹器實(shí)現(xiàn)不一樣照成的爭(zhēng)吵。
????????當(dāng)然開發(fā)中,要是有人寫出這樣的代碼肯定要被人罵.但是從語(yǔ)言的比較來(lái)說(shuō),或者是出于對(duì)語(yǔ)言的細(xì)節(jié)的學(xué)習(xí).上面的代碼還是很有意思的.