30 GOTO 10总是会到10吗?

bla*_*ank 1 compiler-optimization

根据Joel提到的最新播客的精神,他想要一些简单的问题以及可能有趣的答案......

在我们今天必须编程的环境中,我们不能依赖于langauage语句的执行顺序.真的吗?我们应该担心吗?

将30 GOTO 10总是10?*

*我没有故意使用20;)

[编辑]为四个人投票结束这个问题...

"运行时编译器使用分析信息来帮助优化正在编译的代码.允许JVM使用特定于执行的信息以产生更好的代码,这意味着一个程序中的编译方法M可能生成与编译M不同的代码.另一个"

(来自Java并发实践,2006,Goetz等)

..看看"单形呼叫转换"

[编辑]

和另一个编辑,你的处理器可以交换语句的执行顺序......

jal*_*alf 25

不,它不会.但它总会表现得像它一样.编译器设计的基本规则之一是"似乎"规则.你的编译器可以做它喜欢的任何变化,只要结果是要表现得好像你遵循了语言规则.

GOTO 10可以决定跳转到其他位置,只要编译器可以保证它不会改变程序的结果.

所以不,它不应该担心你.


Joa*_*uer 13

不是,如果你有

40 COMEFROM 30
Run Code Online (Sandbox Code Playgroud)

你代码中的某个地方.

  • 你忘了说"请" (3认同)
  • 语言描述指定了"PLEASE"子句(IIRC)的一定比例范围,以免您的程序对编译器看起来不礼貌或者不礼貌.是否定义单行程序是否需要"请"? (3认同)