Maison > Article > développement back-end > L'initialisation d'une variable avec sa propre valeur non déclarée est-elle une anomalie en C/C ?
Initialisation de variable non déclarée : explorer la particularité
En C/C, un comportement curieux se produit lorsqu'une variable est déclarée et initialisée simultanément à l'aide d'un variable nouvellement introduite dans l'expression d'initialisation, telle que :
int x = x + 1;
Cela soulève la question : s'agit-il d'un comportement intentionnel ou d'une anomalie de l'analyseur ?
Initialisation de la variable,
La syntaxe int x = x 1; initialise la variable x tout en la déclarant simultanément. Ce processus d'initialisation se produit au signe d'égalité (=), permettant à la variable d'être utilisée du côté droit.
Cependant, à moins que la variable x ait une durée de stockage statique (en dehors d'une fonction), sa valeur initiale est arbitraire, entraînant un comportement indéfini.
Norme C,
La norme C 03 précise :
"Le point de déclaration d'un nom est immédiatement après son déclarateur complet (...) et avant son initialiseur (le cas échéant)."
Cela implique que dans l'expression int x = x;, le deuxième x dans l'initialisation fait référence à sa propre valeur non définie .
** Particularité de l'analyseur ou comportement prévu ?,
Ce comportement particulier n'est pas spécifique aux versions GCC. Il s'agit d'une implémentation de la norme C/C, qui permet l'initialisation d'une variable avec sa propre valeur nouvellement déclarée.
Cependant, la prudence est de mise lors de l'utilisation de cette approche, car elle peut potentiellement conduire à des résultats inattendus si la variable n'a pas de durée de stockage statique.
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!