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