En C, la déclaration de variables dans l'expression de condition d'une instruction 'if' est une pratique de longue date limitation. Depuis C 17, cette restriction a été levée.
Auparavant, les variables déclarées dans une condition « if » étaient limitées aux sous-instructions de l'instruction « if ». Il était interdit de mettre la déclaration entre parenthèses et une seule déclaration était autorisée par condition. Cette limitation n'était pas pratique dans les cas où l'initialisation de la variable dans la condition était nécessaire.
Considérez l'extrait de code :
bool a = false, b = true; if (bool x = a || b) // Cannot declare x within the condition { }
Pour initialiser x à false dans la portée « if », des parenthèses étaient requises en raison de la priorité des opérateurs. Cependant, les parenthèses n'étaient pas autorisées, ce qui exigeait que x soit déclaré en dehors du « si ». Cela a divulgué la déclaration à une portée plus large.
Dans C 17, cette contrainte a été assouplie. Le code suivant est désormais valide :
if (int a = Func1(), b = Func2(); a && b) { // Do stuff with a and b. }
Notez l'utilisation de ";" pour séparer la déclaration de la condition. Cela permet plusieurs déclarations et l'utilisation de parenthèses le cas échéant.
Par conséquent, ce qui était auparavant non conforme est désormais possible avec l'introduction de C 17.
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!