ホームページ > バックエンド開発 > C++ > C における演算子の優先順位と結合性を定義するのは誰ですか?

C における演算子の優先順位と結合性を定義するのは誰ですか?

Patricia Arquette
リリース: 2024-11-01 14:18:29
オリジナル
355 人が閲覧しました

Who Defines Operator Precedence and Associativity in C  ?

演算子の優先順位と結合性: 制御要素

プログラミングの領域では、演算子の優先順位と結合性を管理するルールを理解することが重要です。多くのプログラミングの教科書では、演算子の優先順位と結合性を示す図が示されていますが、根本的な疑問は残ります: これらのルールは誰が定義するのですか?

標準の定義

通説に反して、ANSI C11 標準では明示的に定義されていません。演算子の優先順位と結合性。代わりに、これらの概念は言語自体の文法に組み込まれています。たとえば、C における加算 ( ) と減算 (-) の文法生成規則は、乗算式が加算式の部分規則であることを示しています。これにより、これらの演算子の間の優先順位が確立されます。

結合性と評価の順序

結合性は、同じ演算子の複数の使用がどのようにグループ化されるかを決定します。たとえば、加算演算子は左から右への結合です。つまり、「x y z」のような式は「(x y) z」としてグループ化されます。

結合性と評価順序を区別することが重要です。これらの概念は関連していますが、別個のものです。結合性はグループ化を決定しますが、評価の順序は式が評価される順序に関係します。

関数呼び出しの評価順序

関数呼び出し演算子の例に戻ります (左から右)結合性は、「f()()()」が「(f())()」としてグループ化されることを意味します。このグループ化ルールは関数評価の順序には影響せず、順序付けされていないままになります。ただし、演​​算子が適用される前にオペランドを評価する必要があります。

シーケンス ポイントとシーケンス ビフォア

歴史的に、シーケンス ポイントは C および C での評価順序を定義するために使用されてきました。ただし、その後、この用語は「前にシーケンスされた」に変更されました。この概念は、ある式の評価が別の式の評価に先行する必要があることを意味します。

要約すると、演算子の優先順位と結合性テーブルはプログラミングの教科書でよく見られますが、これらの規則は最終的には言語の文法から派生したものです。文法を理解すると、プログラマーは式を正確に解釈し、その評価順序を決定できるようになります。

以上がC における演算子の優先順位と結合性を定義するのは誰ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート