Skip to main content

シーケンスポイントとは何ですか?

computionコンピュータープログラミングのシーケンスポイントは、変数の値が完全に計算されたプログラム実行中に発生する瞬間であり、以前の操作からの変更はなく、将来の式の計算はまだ実行されていません。シーケンスポイントが存在する場所がいくつかあります—主にC Language Standard&Mdashで定義されています。関数内のコードの実行の前、codeの単純な行などのstatementなどのステートメントの制御式の終了時に、Codeの単純な行などの完全な式の最後に。シーケンスポイントを定義する理由は、あいまいな状況、未定義の動作をもたらす状況を避けたり、コンパイラを混乱させたり、予測不可能なコードを生成したりすることです。多くの場合、プログラマーはシーケンスポイントについて明示的に心配しませんが、コンパイラの作成では、コードが正しく実行されることを保証するために概念は非常に重要です。ステートメントa ' a + b;。この式では、セミコロンはシーケンスポイントです。式が完了すると、Aの値が評価され、次の式が始まるまで残差計算は実行されません。等記号はシーケンスポイントではありません。なぜなら、Aの値は式全体で任意の順序でコンパイラによって変更される可能性があるからです。その価値の変化を計算する以外の目的。このルールの違反は、アレイに値を割り当てるときに最もよく表現されます。iと呼ばれる変数aとアレイがある場合、cで文法的にi [a] ' a ++を記述することができます。ここでは、変数に現在の値を評価する以外の目的のために、変数に複数回アクセスされます。つまり、これはアレイIへのインデックスとして使用されます。これは、コンパイラがインデックスとして使用される前または使用後にAを増分する可能性があることを意味し、プログラムでは依存できない予測不可能な動作を作成します。基本的に、ステートメントがコンパイラによって一貫して評価および実行されることを保証する方法と見なすことができます。これにより、定義された動作が予測可能であるため、コンパイラが最適化戦略を採用することもできます。C言語標準内には、シーケンスポイントの3つの主要なインスタンスがあります。つまり、機能が実行を開始したとき、論理演算子とコンマのポイントで、およびほとんどのCステートメントがそうであるように、セミコロンで終わる完全な式の終わりに。