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?
Version imprimable
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: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
Non, je ne parle pas de la portée de l'identificateur, mais de la durée de vie (création/destruction)