演算子の優先順位と結合性: 定義と評価順序との関係
はじめに
プログラミングにおける言語、演算子の優先順位、結合性によって、演算子が評価される順序が決まります。多くのプログラミングの教科書にはこれらのプロパティをリストした表が記載されていますが、その解釈とその定義のソースに関して疑問が生じます。
質問
回答
演算子の優先順位と結合性の定義
演算子の優先順位と結合性は、言語標準自体の中で定義されます。標準文法は、式を構築するための規則を指定します。これらのルールを調べることで、演算子の優先順位と結合性を導き出すことができます。
たとえば、 C では、加法式 (加算と減算) の文法は次のとおりです。
additive-expression: multiplicative-expression additive-expression + multiplicative-expression additive-expression - multiplicative-expression
この規則から、乗法式 (乗算と除算) は加法式の部分規則であるため、加法式よりも優先順位が高いことが推測できます。さらに、演算子と - の左から右への結合性は、加算式が他の加算式で再帰的に構成される可能性があるというルールから推測できます。
評価順序
演算子の優先順位と結合性、および評価の順序を区別することが重要です。優先順位と結合性によって演算子がどのようにグループ化されるかが決まりますが、評価の順序は個々の式が評価される順序を指します。 C では、評価が優先順位と結合性に従って厳密に行われることは保証されていません。
たとえば、式 f1() f2() * f3() では、 * 演算子は演算子よりも高い優先順位を持ちます。 f1() (f2() * f3()) のグループ化。ただし、評価の順序は定義されていないため、f3()、f1()、または f2() が最初に評価される可能性があります。
論理 OR (||) 演算子などの特定の演算子は、オペランドの評価にシーケンスを課し、短絡を許可します。 x || でy の評価が必要かどうかを決定するために、y、x は常に y より前に評価されます。
以上が演算子の優先順位テーブルと結合テーブルは、プログラミング言語の式の評価について実際に何を示しているのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。