Exception 编译后有无异常的优化-结果是否相同?
给定一个程序,它的功能使用异常:如果我们在一次运行该程序时进行了优化,然后在不进行优化的情况下运行它,那么两次执行的输出是否相同Exception 编译后有无异常的优化-结果是否相同?,exception,optimization,compiler-construction,compilation,programming-languages,Exception,Optimization,Compiler Construction,Compilation,Programming Languages,给定一个程序,它的功能使用异常:如果我们在一次运行该程序时进行了优化,然后在不进行优化的情况下运行它,那么两次执行的输出是否相同 给定同一个程序,它的功能不使用异常-如果我们在一次运行带有优化的程序,然后在没有优化的情况下运行它-两次执行的输出是否相同 这两个问题都取自几天前的一次采访 我认为第一个问题的答案是否定的——因为当某个代码行抛出异常时,作用域是动态的,优化可能会改变程序的执行顺序。因此,两个不同执行(一个有优化,一个没有优化)的输出可能不同 这是正确的吗 第二个问题怎么样 非常感谢:
非常感谢:)优化不应该改变可观察的行为。一般来说,这两个问题的答案都是肯定的。你没提到语言。对于C++,有很多情况下行为是不确定的,如果是这样的话,你可能会看到不同。 你写道: 优化可能会改变程序的执行顺序
虽然这是真的,但在某种程度上,C++有一个限制重新排序的检查点的概念。我必须问他们问题,因为他们愚蠢地假设我知道或不知道他们回答他们想要的。然而,我实际上正在与这个毫无意义的问题作斗争,除非这是一份编写编译器的工作?@TonyHopkinson:student's position in programming。。。你可以假设它还涉及编写编译器。不太喜欢假设:(