[問題] 遞增運算 & 比較運算 運行結果不同於書??

作者: laiDark (煎餃加賴)   2014-08-26 10:49:21
開發平台(Platform): code block
小弟是初學者 自己買書自修學C++
首先是比較運算子
書上的範例是http://codepad.org/o5Rr7KKL
我自己打把後面的cout省去 http://codepad.org/5m5t4ALy
網頁上不能運行 不過我在code block上面的結果是http://ppt.cc/KlAA
為什麼??? 只是省略後面的cout 結果就不一樣?
然後是遞增運算子的問題
我自己的是這樣 http://codepad.org/OP5CrvjO
網頁好像也無法 可是code block 跑出來是這樣http://ppt.cc/NWX6
可是書上 最後一個 j=24 我的是26...?
書上的http://codepad.org/Qh9ZNeDq
這是為什麼???
跟我的就差在把using namespace std;捨去 後面程式std :: 這樣
而且用書上的連code block都無法運行 是哪裡出錯了?
作者: LPH66 (-6.2598534e+18f)   2014-08-26 11:07:00
你合成一個敘述之後違反了置底十三誡之八codepad 也告訴你了這個狀況 i 可能未定義如果書上真的寫 (i++)+i+(i++) 這樣的話把那本書扔了吧
作者: kerwinhui (kezza)   2014-08-26 11:11:00
當同一個算式出現 i++ (或 i--) 和 i 的時候是 ill-defined 的因為可能會被 compiler optimize 成其他的樣子
作者: NonInvertAmp (LastK)   2014-08-26 11:19:00
書扔了+1
作者: iloveyouever (佚名)   2014-08-26 11:23:00
感覺考這沒啥意思@@"24要兜出來的話 (--i) 先做 得出 j=8+8+826要兜出來的話就是 從左往右 26=9+9+8到底是哪種做法 不知道是不是取決於COMPILER怎麼做?
作者: LPH66 (-6.2598534e+18f)   2014-08-26 11:29:00
確實取決於 compiler 的決定, 所以沒有一定
作者: azureblaze (AzureBlaze)   2014-08-26 11:32:00
如果你的書沒告訴你答案不固定 把他扔了
作者: Killercat (殺人貓™)   2014-08-26 11:35:00
會給這種範例的書...建議你換一本比較好
作者: keeper7478 (the Servant of Cthulhu)   2014-08-26 12:45:00
挺好奇是哪本書的
作者: laiDark (煎餃加賴)   2014-08-26 14:03:00
已解決 感謝前輩們的說明 不過書上是真的寫(i++)+i+(i++)書挺舊了 好像06年出版的 遞增那邊有說取決於compiler不過我不小心忽略了@@

Links booklink

Contact Us: admin [ a t ] ucptt.com