看板 java 關於我們 聯絡資訊
如果有兩個 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)
PsMonkey:這種問題,你應該動手寫,而不是問 google 或問人 05/13 16:56
謝謝版主的回覆,我實驗的結果是 fun1() 會先執行,也就是左而右執行 不過因為 C++ 是由 Compiler 規定,各家可能會有不同行為,因此讓我感到困惑 究竟是我用的 Java Compiler 剛好是從左而右執行 還是 Java 在 spec 裡有明確規定呢? 這是我的問題所在,沒有描述清楚,很不好意思 ※ 編輯: james732 來自: 140.117.171.46 (05/13 17:12)
tkcn:問的是 spec 有沒有定義,這不能寫 code 去測吧 05/13 17:09
qrtt1:JLS有寫啊. 我有看到它了. 哈哈哈 05/13 17:19
james732:可以請問關鍵字是什麼嗎?我可以自己去看 :) 05/13 17:33
PsMonkey:to tkcn:文章看起來不像是問 def 啊... [攤手] 05/13 17:36
tkcn:不算程式碼的話,第六行 不是嗎? 05/13 19:27
AI3767:fun2 先執行就不會 overflow 嗎@@? 05/13 22:41