bjr,
je voudrais savoir si toutes les variables locales doivent forcement être déclarée au début du bloc avant la première instruction?
bjr,
je voudrais savoir si toutes les variables locales doivent forcement être déclarée au début du bloc avant la première instruction?
En C99 ce n'est pas une obligation.
Mais pour garder une compatibilité avec les compilateurs C89 etc... il est préférable de toujours les déclarer en début de bloc.
Pour la lisibilité c'est aussi un point important
Cet exemple fonctionnera en C99 mais pas en C89 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part for (int i = 0; i < N; i++)
Pour compléter, l'objet (sauf VLA du C99) a la même durée de vie où qu'il soit déclaré dans le bloc : du début à la fin du bloc où il se trouve. Pour les VLA, la durée de vie s'étend de sa déclaration à la fin du bloc.
C'est donc essentiellement une question de clarté dans le code qui va déterminer en C99 la position de la déclaration.
Un avantage de pouvoir déclarer des variables ailleurs qu'en début de bloc est la possibilité d'utiliser plus intensément le qualificatif const. C'est toutefois plus utile en C++ qu'en C99, car en C99, une variable const n'est malheureusement pas considérée comme une expression constante.
Thierry
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Tu veux dire qu'en C99, ceci compile?
Code C99? : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 void UneFonction(void) { toto = 42; int toto; printf("%d\n", toto); }
SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.
"Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
Apparently everyone. -- Raymond Chen.
Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.
Non, je ne parle pas de la portée de l'identificateur, mais de la durée de vie (création/destruction)
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Partager