[問題] 參數求值順序

看板java作者 (好人超)時間16年前 (2010/05/13 15:45), 編輯推噓5(502)
留言7則, 5人參與, 最新討論串1/2 (看更多)
如果有兩個 method 長這個樣子: int foo(int a, int b); int fun2(); 而有另一個 method,有這樣的內容: int fun1() { foo(fun1(), fun2()); } 這個 fun1 會不會變成無窮遞迴而導致 stack overflow 要看 fun1, fun2 哪個先被執行 但我有個疑惑,對 Java 而言,哪個會先執行呢? 在 spec 有明令規定,還是像 C++ 一樣,由 Compiler 自行決定呢? 我找過 google, 也找過 spec 但苦於不知道該找什麼關鍵字...orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46 ※ 編輯: james732 來自: 140.117.171.46 (05/13 15:46)

05/13 16:56, , 1F
這種問題,你應該動手寫,而不是問 google 或問人
05/13 16:56, 1F
謝謝版主的回覆,我實驗的結果是 fun1() 會先執行,也就是左而右執行 不過因為 C++ 是由 Compiler 規定,各家可能會有不同行為,因此讓我感到困惑 究竟是我用的 Java Compiler 剛好是從左而右執行 還是 Java 在 spec 裡有明確規定呢? 這是我的問題所在,沒有描述清楚,很不好意思 ※ 編輯: james732 來自: 140.117.171.46 (05/13 17:12)

05/13 17:09, , 2F
問的是 spec 有沒有定義,這不能寫 code 去測吧
05/13 17:09, 2F

05/13 17:19, , 3F
JLS有寫啊. 我有看到它了. 哈哈哈
05/13 17:19, 3F

05/13 17:33, , 4F
可以請問關鍵字是什麼嗎?我可以自己去看 :)
05/13 17:33, 4F

05/13 17:36, , 5F
to tkcn:文章看起來不像是問 def 啊... [攤手]
05/13 17:36, 5F

05/13 19:27, , 6F
不算程式碼的話,第六行 不是嗎?
05/13 19:27, 6F

05/13 22:41, , 7F
fun2 先執行就不會 overflow 嗎@@?
05/13 22:41, 7F
文章代碼(AID): #1BwwuMSS (java)
文章代碼(AID): #1BwwuMSS (java)