Maison > développement back-end > C++ > le corps du texte

Les parenthèses supplémentaires en C affectent-elles le comportement du programme ?

Patricia Arquette
Libérer: 2024-10-23 22:01:30
original
747 Les gens l'ont consulté

Do Extra Parentheses in C   Affect Program Behavior?

Parenthèses supplémentaires en C au-delà de la priorité des opérateurs

Bien que les parenthèses supplémentaires n'affectent généralement pas le comportement du programme en C, il existe des contextes spécifiques dans lesquels elles peuvent modifier la signification du code.

Empêcher la recherche de nom dépendante d'un argument (ADNL)

L'utilisation de parenthèses autour d'un appel de fonction, (fun)(arg), empêche l'argument -Recherche de nom dépendante. Cela signifie que les fonctions amies au niveau de l'espace de noms ou les déclarations de modèles de fonctions qui seraient autrement prises en compte en fonction des types d'arguments ne seront pas incluses dans la recherche.

Activation de l'opérateur virgule dans les contextes de liste

Dans des contextes de type liste tels que les arguments de fonction et les listes d'initialisation, les parenthèses peuvent permettre l'utilisation de l'opérateur virgule là où il ne s'appliquerait pas sous la forme normale. Par exemple, a, (b, c), d aura l'opérateur virgule appliqué à b et c, alors que a, b, c, d ne le sera pas.

Résolution de l'ambiguïté des analyses contrariantes

Des parenthèses supplémentaires peuvent résoudre les ambiguïtés d'analyse dans certaines déclarations. L'"analyse la plus vexante" est un exemple célèbre où une déclaration peut être interprétée comme une fonction si des parenthèses supplémentaires ne sont pas présentes.

Déduction de référence dans les expressions decltype

Dans les expressions decltype, la présence ou l'absence de parenthèses affecte la référence déduite. Par exemple, decltype(e) déduit le type de e, tandis que decltype((e)) déduit le type de l'expression (e).

Prévention des erreurs liées aux macros du préprocesseur

Des parenthèses supplémentaires peuvent empêcher les erreurs liées aux macros du préprocesseur. Par exemple, mettre les paramètres de macro entre parenthèses #define TIMES(A, B) (A) * (B); garantit que la priorité des opérateurs est correcte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!