[問題] return 的執行順序? (解決)

看板C_and_CPP作者 (黑炭)時間10年前 (2014/03/07 16:18), 編輯推噓2(209)
留言11則, 4人參與, 最新討論串1/1
開發平台(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

03/07 16:25, , 1F
undefined behavior
03/07 16:25, 1F
不好意思 我程式碼重貼了 ※ 編輯: asadman1523 來自: 61.228.39.28 (03/07 16:30)

03/07 16:42, , 2F
優先權幫你決定好了才讀到()
03/07 16:42, 2F

03/07 18:06, , 3F
您是說i--這個部分?
03/07 18:06, 3F

03/07 18:27, , 4F
原來的問題, 置底十三誡之八; 而且這裡犯了兩次這一條
03/07 18:27, 4F

03/07 18:28, , 5F
一次是第 8 行, 另一次是第 14 行; 第 14 行比較不明顯,
03/07 18:28, 5F

03/07 18:28, , 6F
這是因為 q(p) 裡動了 p 的內容然後前面又取 p[0]
03/07 18:28, 6F

03/07 18:30, , 7F
後面的問題, 括號確實先做, 但 i-- 的效應跟括號無關
03/07 18:30, 7F

03/07 18:30, , 8F
或者應該這麼理解 i-- 這個式子: 它回傳 i 原本的值, 附帶
03/07 18:30, 8F

03/07 18:31, , 9F
把 i 的值減一; 所以 i-- 得出 5 跟 i 何時減一已經無關了
03/07 18:31, 9F

03/07 20:15, , 10F
謝謝,因為這是某學校的考古題,剛好跟同學討論到
03/07 20:15, 10F

03/07 20:15, , 11F
順便上來解惑。
03/07 20:15, 11F
文章代碼(AID): #1J6O3Qbu (C_and_CPP)