1
  1. 機能に例外を使用するプログラムがあるとします。プログラムを一度に最適化して実行し、その後最適化せずに実行すると、両方の実行の出力は同じになりますか?

  2. 機能に例外を使用しない同じプログラムを考えると、ある時点でプログラムを最適化して実行し、その後最適化せずに実行すると、両方の実行の出力は同じになりますか?

両方の質問は、数日前に行われたインタビューから取られています...

最初の質問に対する答えは NO だと思います。なぜなら、一部のコード行が例外をスローすると、スコープが動的になり、最適化によってプログラムの実行順序が変更される可能性があるためです。したがって、2 つの異なる実行の出力 (1 つの最適化ありとなし) は異なる場合があります ...

これは正しいです ?

2nd質問はどうですか?

とても有難い :)

4

1 に答える 1

2

最適化によって、観察可能な動作が変わることは想定されていません。一般的に、両方の質問に対する答えは「はい」です。あなたは言語について言及していません。C ++の場合、動作が定義されていない状況がたくさんあります。その場合、違いが見られることがあります。

あなたが書く:

最適化により、プログラムの実行順序が変わる可能性があります。

それは事実ですが、ある程度、C++には再注文を制限するチェックポイントの概念があります。

于 2013-02-16T15:51:12.630 に答える