Maison > développement back-end > C++ > L'expression « if » de C peut-elle gérer les déclarations de variables de manière cohérente entre les normes et les compilateurs ?

L'expression « if » de C peut-elle gérer les déclarations de variables de manière cohérente entre les normes et les compilateurs ?

Barbara Streisand
Libérer: 2024-11-27 13:26:12
original
569 Les gens l'ont consulté

Can C  's `if` Expression Handle Variable Declarations Consistently Across Standards and Compilers?

Déclaration de variable dans une expression if en C

En C , la syntaxe de déclaration de variable dans la condition d'une expression if est souvent limitée. La question se pose de savoir si ces limitations sont basées sur la norme ou spécifiques au compilateur.

La norme C de 2003 (6.4.3) autorise les déclarations de variables dans une condition if, avec une portée s'étendant aux sous-instructions contrôlées. Cependant, il n'interdit pas explicitement les parenthèses autour de la déclaration ou les déclarations multiples dans la condition.

Les versions antérieures de C se comportaient de manière incohérente en ce qui concerne les parenthèses et les déclarations multiples. Dans les exemples de code fournis :

  • if(int a = Func1()) est conforme à la norme, déclarant a dans la condition if.
  • if((int a = Func1( ))) ne parvient pas à se compiler à cause des parenthèses.
  • if((int a = Func1()) && (int b = Func2())) nécessite une déclaration de x en dehors du bloc if en raison du manque de parenthèses.

Cette limitation n'est pas pratique pour les scénarios où une seule déclaration est requise dans la condition.

Solution C 17

C 17 a introduit une solution à ce problème :

if (int a = Func1(), b = Func2(); a && b)
{
    // Do stuff with a and b.
}
Copier après la connexion

Cette syntaxe utilise un point-virgule (;) pour séparer la déclaration de la condition. Il permet de déclarer plusieurs variables dans une seule condition, éliminant ainsi l'inconvénient précédent.

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.cn
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