Déclaration de variable dans une expression « if » : clarification des règles
Les variables déclarées dans une condition d'expression « if » ont été un point d'interrogation pour programmeurs depuis un certain temps. Le standard C décrivait initialement la portée de ces variables, mais des ambiguïtés subsistaient concernant les parenthèses et les déclarations multiples.
Dans l'exemple fourni, le compilateur ne parvient pas à compiler lorsque des parenthèses sont utilisées autour de la déclaration de variable :
if((int a = Func1())) { // Fails to compile. }
Ce comportement, qui s'étend également aux cas de déclarations multiples dans une seule condition, est dû à la règle selon laquelle la déclaration doit immédiatement précéder la condition elle-même. Les parenthèses enfreignent cette règle.
Cependant, avec l'introduction du C 17, la situation a changé :
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
Désormais, il est possible de déclarer des variables entre parenthèses, en utilisant ; pour séparer la déclaration de la condition. Cette amélioration étend la flexibilité des conditions « si ».
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!