Exception 编译后有无异常的优化-结果是否相同?

Exception 编译后有无异常的优化-结果是否相同?,exception,optimization,compiler-construction,compilation,programming-languages,Exception,Optimization,Compiler Construction,Compilation,Programming Languages,给定一个程序,它的功能使用异常:如果我们在一次运行该程序时进行了优化,然后在不进行优化的情况下运行它,那么两次执行的输出是否相同 给定同一个程序,它的功能不使用异常-如果我们在一次运行带有优化的程序,然后在没有优化的情况下运行它-两次执行的输出是否相同 这两个问题都取自几天前的一次采访 我认为第一个问题的答案是否定的——因为当某个代码行抛出异常时,作用域是动态的,优化可能会改变程序的执行顺序。因此,两个不同执行(一个有优化,一个没有优化)的输出可能不同 这是正确的吗 第二个问题怎么样 非常感谢:

给定一个程序,它的功能使用异常:如果我们在一次运行该程序时进行了优化,然后在不进行优化的情况下运行它,那么两次执行的输出是否相同

  • 给定同一个程序,它的功能不使用异常-如果我们在一次运行带有优化的程序,然后在没有优化的情况下运行它-两次执行的输出是否相同

  • 这两个问题都取自几天前的一次采访

    我认为第一个问题的答案是否定的——因为当某个代码行抛出异常时,作用域是动态的,优化可能会改变程序的执行顺序。因此,两个不同执行(一个有优化,一个没有优化)的输出可能不同

    这是正确的吗

    第二个问题怎么样


    非常感谢:)

    优化不应该改变可观察的行为。一般来说,这两个问题的答案都是肯定的。你没提到语言。对于C++,有很多情况下行为是不确定的,如果是这样的话,你可能会看到不同。 你写道:

    优化可能会改变程序的执行顺序


    虽然这是真的,但在某种程度上,C++有一个限制重新排序的检查点的概念。

    我必须问他们问题,因为他们愚蠢地假设我知道或不知道他们回答他们想要的。然而,我实际上正在与这个毫无意义的问题作斗争,除非这是一份编写编译器的工作?@TonyHopkinson:student's position in programming。。。你可以假设它还涉及编写编译器。不太喜欢假设:(