6
votes

Des boucles en c - pour () ou tandis que () - ce qui est le meilleur?

pour () ou tandis que () - ce qui est le mieux?

i=1;
while (i<a) {
/* do something */
i++;
}


6 commentaires

Dépend. Avez-vous continuer; dans le cadre de / * faire quelque chose * / ? Ensuite, les boucles ne font même pas la même chose.


Meilleur dans quel sens?


C'est sûrement la définition d'une question de subjective subjective.


@Pavium: Pas vraiment; La communauté a des idiomes standard et des meilleures pratiques.


@Jason, eh bien je peux voir que ce n'était pas argumentatif (et personne n'a voté pour le fermer).


Si vous n'avez que deux idiomes, vous ne pouvez pas avoir le meilleur, seulement un meilleur :)


4 Réponses :


17
votes

Le premier est la manière idiomatique; C'est ce que la plupart des codeurs C m'attendent à voir. Cependant, je dois noter que la plupart des gens s'attendent également à voir

FILE *fp;
for(fp = fopen(path, "r"); fgets(buf, max, fp) != NULL; ) { /* something */ }


0 commentaires

1
votes

Lequel a le plus de sens dans la situation.

Le pour La boucle vous indique que c'est probablement une boucle de comptage fixe. À partir de 1 fin avant un.

Le tandis que boucle n'implique aucune chose, juste que cela se termine une fois i> = a (au moins de simplement lire le alors que (i en haut).

Bien sûr, ce n'est pas une règle et les programmeurs font généralement comme ils le voient, mais cela facilite la lecture d'un code sans avoir à reconvertir une certaine section.


0 commentaires

3
votes

Cela dépend. Ce qui rend la lecture la plus facile devrait être une directive IMHO. Si vous connaissez les limites au préalable, vous devez probablement utiliser «pour». Parce que cela dit clairement dans une ligne où la boucle commence, il se termine et comment aller d'un élément à l'autre.


0 commentaires

2
votes

VOTEZ UP POUR DAN MCG - Si la boucle a un nombre fixe, etc., utilisez pour - c'est plus idiomatique. Cas classiques de chacun: xxx

vs. xxx

aussi: Si vous vous trouvez quittant les conditions de votre part, considérez ce qu'elle serait Soyez comme si vous vous le répésiez comme un moment.

À la fin de la journée: Retournez et lisez chaque version de la boucle. Lequel se distingue davantage dans votre esprit comme "clair" en intention?


0 commentaires