【发布时间】:2025-12-18 21:30:02
【问题描述】:
本着 latest podcast Joel 提到的精神,他想要一些简单的问题以及可能有趣的答案...
在当今我们必须编程的环境中,我们不能依赖语言语句的执行顺序。真的吗?我们应该担心吗?
30 GOTO 10 总是会转到 10 吗?*
*我不是故意使用 20 ;)
[编辑]四个人投票结束这个问题...
“运行时编译器使用分析信息来帮助优化正在编译的代码。JVM 被允许使用特定于执行的信息来生成更好的代码,这意味着一个程序中的编译方法 M 可能生成不同的代码在另一个中编译 M"
(来自 Java 并发实践,2006,Goetz 等人)
.. 看看“单态调用转换”
[编辑]
另一个编辑,您的处理器可以交换语句的执行顺序...
【问题讨论】:
-
嗯,那是哪些环境?
-
如果问题不清楚,您可以在评论中请求更多信息,而不是关闭它。 ;)
-
当你看到它是如何被标记的时候,这个问题就变得清晰多了。编译器优化会对您的代码进行大量转换。那么“30 GOTO 10”在这些优化之后仍然会变为 10 吗?”至少我是这么理解的
-
这是一个有效的问题。为什么版主必须关闭他们不够聪明无法理解的问题?
-
这对你我来说都很明显,因为我们知道答案。不是每个人都这样做,因此这个问题。我发现有很多关于 SO 的问题很明显。显然其他人不同意,因为问题仍然被问到。只要人们希望他们得到答复,这难道不是这样做的正确地方吗? OP 发现编译器会更改您的代码(他们会),并询问这些更改的安全性。对我来说似乎很公平。