※ 引述《jserv.bbs@bbs.sayya.org (松鼠)》之銘言:
: 基本上,這與 compiler optimization 有密切關係。
: 先試著以 gcc-3.4 來編譯以下的 C 程式碼 (假設為 strange.c)
: 可以對照 "-O0" 與 "-O1" 的輸出分野,即可知曉為何如此了。
: 至於 gcc4,採用完全不同的 optimization policy,那就另當別論。
原來是 optimization 造成的差異
不過在這邊我有了一個疑問
optimization 不是在不影響行為的情況下去對程式做修改嗎?
就如同乘以 2 不如用 shift
程式最後的結果一直都是相同的
在這段 code 下會因為 optimization 的 order 不同而產生迥異的結果
是因為 gcc 的設計本該如此
或是因為程式碼本身有問題,使得 gcc 做出不正確的 optimization ?
--
我想你會衰成這樣都是我害的
---- Tizzy Mac
緊張的麥金塔?這是誰(._.?)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.104.231.26