演算子の優先順位と評価の順序の関係は何ですか?
一般的な理解に反して、演算子の優先順位は評価の順序を完全には決定しません。プログラミングにおける評価。優先順位によって値の計算の順序が決まりますが、オペランド自体の評価は優先順位とは無関係です。
例:
式 x
について考えてみましょう。 y push(z); push(y); push(x); test_less(); // compares TOS to TOS(1), pushes result on stack test_less(); // compares TOS to TOS(1), pushes result on stackこれは、x または y の前に z を評価しますが、引き続き (x 評価と副作用:副作用、変数のインクリメントやデクリメントなどは、概念的には別のスレッドによって実行されます。このスレッドは次のシーケンス ポイントで結合します。 a = b c; という式を考えてみましょう。これは次のように実行できます。push(a); push(b); push(c+1); side_effects_thread.queue(inc, b); side_effects_thread.queue(inc, c); add(); assign(); join(side_effects_thread);ここで、a は、代入のターゲットであっても、b または c より前に評価されます。次のシーケンス ポイントより前の式の他の部分で変数を使用しようとすると、未定義の動作が発生します。
以上が演算子の優先順位はプログラミングにおける評価の順序とどのように異なりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。