余分な括弧は通常、C プログラムの意味を変更しませんが、特定の状況では、括弧によって意味が変更されることがあります。基本的な演算子の優先順位を上書きする効果:
(fn)(arg) などの関数呼び出しを囲むかっこは、引数に依存する名前検索 (ADL) を防止します。括弧がないと、fn(arg) は、一致する可能性のある関数を囲む名前空間内で検索します。
関数の引数や初期化子リストのようなリスト コンテキストでは、a、(b、c)、d を使用すると、標準の a とは異なり、カンマ演算子を (b, c) に個別に適用できます。 b、c、d表記。
余分な括弧を使用すると、宣言のような構文が関数または式ステートメントと衝突するコードの曖昧さを解消できます。たとえば、S w(int(a)); S y((int)a); と S y((int)a); では、括弧によって、関数宣言ではなくオブジェクト宣言であることが明確になります。
decltype(e) は、オペランドが左辺値参照であるか右辺値参照であるかを推定します。 decltype((e)) のように括弧を追加すると、オペランドは強制的に右辺値参照として扱われます。
マクロ定義内で括弧を使用すると、演算子の優先順位の問題を回避し、マクロ引数をコンマで保護し、ヘッダーでのマクロ展開を防ぐことができます。たとえば、 #define TIMES(A, B) (A) * (B); TIMES(1 2, 2 1) が 9 に評価されることを保証します。
以上が名前の検索、カンマ演算子の動作、または式の評価を操作するために C で追加の括弧を使用する場合とその方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。