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

看板C_and_CPP作者 (Larry)時間9年前 (2014/08/26 10:49), 編輯推噓4(4014)
留言18則, 8人參與, 最新討論串1/1
開發平台(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都無法運行 是哪裡出錯了? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.238.15 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1409021367.A.CC8.html

08/26 11:07, , 1F
你合成一個敘述之後違反了置底十三誡之八
08/26 11:07, 1F

08/26 11:08, , 2F
codepad 也告訴你了這個狀況 i 可能未定義
08/26 11:08, 2F

08/26 11:08, , 3F
如果書上真的寫 (i++)+i+(i++) 這樣的話把那本書扔了吧
08/26 11:08, 3F

08/26 11:11, , 4F
當同一個算式出現 i++ (或 i--) 和 i 的時候是 ill-
08/26 11:11, 4F

08/26 11:12, , 5F
defined 的
08/26 11:12, 5F

08/26 11:16, , 6F
因為可能會被 compiler optimize 成其他的樣子
08/26 11:16, 6F

08/26 11:19, , 7F
書扔了+1
08/26 11:19, 7F

08/26 11:23, , 8F
感覺考這沒啥意思@@"
08/26 11:23, 8F

08/26 11:24, , 9F
24要兜出來的話 (--i) 先做 得出 j=8+8+8
08/26 11:24, 9F

08/26 11:25, , 10F
26要兜出來的話就是 從左往右 26=9+9+8
08/26 11:25, 10F

08/26 11:27, , 11F
到底是哪種做法 不知道是不是取決於COMPILER怎麼做?
08/26 11:27, 11F

08/26 11:29, , 12F
確實取決於 compiler 的決定, 所以沒有一定
08/26 11:29, 12F

08/26 11:32, , 13F
如果你的書沒告訴你答案不固定 把他扔了
08/26 11:32, 13F

08/26 11:35, , 14F
會給這種範例的書...建議你換一本比較好
08/26 11:35, 14F

08/26 12:45, , 15F
挺好奇是哪本書的
08/26 12:45, 15F

08/26 14:03, , 16F
已解決 感謝前輩們的說明 不過書上是真的寫(i++)+i+(i++)
08/26 14:03, 16F

08/26 14:05, , 17F
書挺舊了 好像06年出版的 遞增那邊有說取決於compiler
08/26 14:05, 17F

08/26 14:06, , 18F
不過我不小心忽略了@@
08/26 14:06, 18F
文章代碼(AID): #1J-_Mtp8 (C_and_CPP)