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
Barbara Streisandoriginal
2024-11-27 13:26:12596parcourir

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

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!

Déclaration:
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