作者james732 (好人超)
站内java
标题[问题] 参数求值顺序
时间Thu May 13 15:45:24 2010
如果有两个 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)
1F:推 PsMonkey:这种问题,你应该动手写,而不是问 google 或问人 05/13 16:56
谢谢版主的回覆,我实验的结果是 fun1() 会先执行,也就是左而右执行
不过因为 C++ 是由 Compiler 规定,各家可能会有不同行为,因此让我感到困惑
究竟是我用的 Java Compiler 刚好是从左而右执行
还是 Java 在 spec 里有明确规定呢?
这是我的问题所在,没有描述清楚,很不好意思
※ 编辑: james732 来自: 140.117.171.46 (05/13 17:12)
2F:推 tkcn:问的是 spec 有没有定义,这不能写 code 去测吧 05/13 17:09
3F:→ qrtt1:JLS有写啊. 我有看到它了. 哈哈哈 05/13 17:19
4F:→ james732:可以请问关键字是什麽吗?我可以自己去看 :) 05/13 17:33
5F:推 PsMonkey:to tkcn:文章看起来不像是问 def 啊... [摊手] 05/13 17:36
6F:推 tkcn:不算程式码的话,第六行 不是吗? 05/13 19:27
7F:推 AI3767:fun2 先执行就不会 overflow 吗@@? 05/13 22:41