Klammern in C haben normalerweise keinen Einfluss auf die Programmbedeutung, außer in ungewöhnlichen Situationen:
Klammern können die argumentabhängige Namenssuche (ADL) in Funktionsaufrufen verhindern. Während die Form fun(arg) Friend-Funktionen im Namespace-Bereich über ADL berücksichtigt, ist dies bei (fun)(arg) nicht der Fall, was eine präzise Funktionsauswahl ermöglicht.
In Listenkontexten ( Funktionsargumente, Initialisierungslisten) gilt der Kommaoperator nur innerhalb von Klammern. Klammern der Form a, (b, c), d ermöglichen den Kommaoperator, während a, b, c, d dies nicht tun.
Klammern können aufgelöst werden Mehrdeutigkeit in „lästigen Parse“-Situationen, in denen ein Konstrukt entweder eine Deklaration oder ein Ausdruck sein kann. Indem ein Typ im Funktionsstil in Klammern gesetzt wird, kann er eindeutig als Ausdruck identifiziert werden, wodurch Parse-Mehrdeutigkeiten vermieden werden.
Zusätzliche Klammern können die abgeleitete Referenzität in decltype beeinflussen Ausdrücke. Wenn der Operand von decltype(e) ein nicht ausgewerteter L-Wert ist, leitet das Einschließen in Klammern (decltype((e))) eine konstante L-Wert-Referenz (&) ab.
Klammern können Fehler in Präprozessormakros verhindern, indem sie die Makroerweiterung steuern. Beispielsweise vermeidet die Verwendung von Klammern um Makroparameter Probleme mit der Operatorpriorität, und das Einschließen von Funktionsaufrufen in Klammern schützt vor unerwünschten Makroersetzungen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3