看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) code::block DevC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 兩個編譯器傳回來的結果不一樣 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) http://pastie.org/8886352 補充說明(Supplement): test02() 就是把一個陣列變成{5,7,11,17,25} 然後回傳第四個數字17 用code::block跑會回傳18 Devc++ 跑會回傳22 想請問這個有正確答案嗎? 我自己的想法是q(p) 會先跑,之後會回傳 所以p[0]已經變成5 所以我支持22這個答案... 另外我想請問 int k=0,i=5; k=k+(i--); 這個為什麼k會等於5...括號先做不適用這裡嗎? 謝謝大家 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.39.28
ppc:undefined behavior 03/07 16:25
不好意思 我程式碼重貼了 ※ 編輯: asadman1523 來自: 61.228.39.28 (03/07 16:30)
testPtt:優先權幫你決定好了才讀到() 03/07 16:42
asadman1523:您是說i--這個部分? 03/07 18:06
LPH66:原來的問題, 置底十三誡之八; 而且這裡犯了兩次這一條 03/07 18:27
LPH66:一次是第 8 行, 另一次是第 14 行; 第 14 行比較不明顯, 03/07 18:28
LPH66:這是因為 q(p) 裡動了 p 的內容然後前面又取 p[0] 03/07 18:28
LPH66:後面的問題, 括號確實先做, 但 i-- 的效應跟括號無關 03/07 18:30
LPH66:或者應該這麼理解 i-- 這個式子: 它回傳 i 原本的值, 附帶 03/07 18:30
LPH66:把 i 的值減一; 所以 i-- 得出 5 跟 i 何時減一已經無關了 03/07 18:31
asadman1523:謝謝,因為這是某學校的考古題,剛好跟同學討論到 03/07 20:15
asadman1523:順便上來解惑。 03/07 20:15