Des accolades définissent un bloque. Entre d’autres choses ca défini la portée de tes variables.
T’as besoin d’accolades au début d’une fonction, pour définir la portée d’une boucle, pour définir la portée d’un if.
Genre ton accolade après “printf (”\n");" (4 lignes avant la fin) elle sert à rien. Où est l’accolade ouvrante associée ?
Elle ferme quoi ? Dans ton cas l’accolade en question ferme l’accolade de la fonction main… donc t’auras surement une erreur de compilation.
Faut réfléchir un peu à ce qu’on fait… c’est pas du random…
Bah si, il veut du random, alors il code aléatoirement?
(je sors, désolé)
Au passage, ce que tu dis n’est pas totalement vrai. Tu peux très bien utiliser les accolades pour signifier quelque chose. Je prend en exemple openGL:
glPushMatrix();
{
...
}
glPopMatrix();
Les accolades permettent de te signifier à toi que tu as oublié le pop associé à ton push.
Mais en pratique en OpenGL on utilise une simple tabulation pour signaler un PushMatrix / PopMatrix ou un Begin / End.
Apres cest une question de convention… mais les accolades ont un sens important pour les parseurs / compilateurs (comme tu le sais)
Je prefere perso eviter d’en abuser, meme si effectivement c’est la meme chose et ca peut permettre de clarifier le code.
Question de gout je suppose
Je vais faire un petit test pour voir… je te tiens au courant
Je ne t'ai pas dit d'enlever toutes les accolades :) Juste celle qui au-dessus de systeme("Pause").
Bon j’ai fait mon petit test. Sans surprise les accolades sont très importantes et définissent la porté des variables entre autre.
Par exemple :
#include <stdio.h>
int main()
{
int i = 0;
i++;
printf("%d\n", i);
{
int i;
i--;
printf("%d\n", i);
}
printf("%d\n", i);
return 0;
}
Les accolades dans ce cas ne sont pas que décoratives. La deuxieme déclaration de i prend précédence sur la 1ere dans le bloque défini (et pas d’erreur de compilation).
Une fois sortie des accolades c’est la première déclaration qui est valable.
Ca ne veut pas dire qu’il ne faut pas le faire, simplement que c’est dangereux et loin d’etre recommandé. Si pour une raison ou une autre, on déclare une variable dans ces accolades (qui sont là qu’a titre décoratives ou de clarté) la variable ne sera plus valabe à la sortie. Tout comme on pourrait “overrider” une variable de la fonction sans s’en rendre compte (un indice dans une boucle for par exemple).
Enfin tout ca pour dire que les accolades on un sens tres important et ne sont à utiliser que dans le cas ou un veut définir un sous bloque avec une portée limitée.
J’espere que je t’ai convaincu de ne plus le faire
Edité le 05/03/2008 à 08:46