2016-07-14 1 views
4

Est-ce une boucle, pas une boucle, ou une boucle et non une boucle? Si vous comptez le nombre de boucles dans un programme, le comptez-vous? Je suis curieux parce que je travaille avec quelqu'un qui a un projet qui lui demande de compter le nombre de boucles dans un programme.Est-ce une boucle?

+2

C'est une boucle while, malgré la valeur false, donc je suppose que c'est le cas. – Jeremy

+0

C'est autant une boucle que pour (int i = 0; i <1; i ++) {/ * ... * /} ' – pmg

+1

@Richie obvoiusly un bon lien, mais pas un dupe ici. –

Répondre

7

En standard C, C11, chapitre §6.8.5, déclarations Iteration, il est répertorié

itération déclaration:

            while (expression) statement
              dodéclarationwhile (expression) ;
              for (expression opt; expression opt; expression opt) statement
              for (expression de déclaration opt; expression opt) statement

Le do statement while (expression) ; est mentionné, si oui, il est une déclaration boucle (itération), quel que soit du nombre d'itérations-il dans une mise en œuvre/usage particulier.

FWIW, ceci boucle une fois.

Pour ajouter un peu plus de précisions, quoting from Wikipedia, (Souligné par)

Une boucle est une séquence d'instructions qui est spécifié une fois mais qui peut êtreeffectué plusieurs fois dans Succession. Le code "inside" de la boucle (le corps de la boucle, indiqué ci-dessous comme xxx) est obéi un nombre de fois spécifié, ou une fois pour une collection d'éléments, ou jusqu'à ce que certaines conditions soient remplies, ou indéfiniment.

+0

Est-ce que toutes les déclarations de boucle sont nécessairement aussi des boucles? –

+0

Les mots @vjb peuvent être difficiles. c'est évidemment une déclaration _loop_ avec une itération de _exactly_ une fois. –

2

Dans un sens, oui c'est une boucle, mais en réalité non. C'est techniquement une boucle parce que vous utilisez la syntaxe de la boucle, mais ce que vous faites est juste d'exécuter le code dans votre "boucle" une fois, puis de rompre. Je ne considérerais pas cela comme une boucle car vous n'ajoutez pas d'exécution algorithmique à votre programme, il est donc inutile de la compter comme une boucle. Note: ne faites pas cela, c'est une pratique de codage inutile et mauvaise.

EDIT: Crédits à Jeremy dans les commentaires ci-dessous, il y a au moins un cas où cette construction peut être utile dans C: do { ... } while (0) — what is it good for?

+6

C'est aussi une construction extrêmement répandue utilisée dans presque toutes les macro. –

+0

@KerrekSB Au moins, on l'espère. En réalité, beaucoup de macros sont faites sans cela ... – glglgl

+0

http://stackoverflow.com/questions/257418/do-while-0-what-is-it-good-for – Jeremy

0
do { 
    ... 
}while(k); 

Maintenant, le nombre d'itérations dépendent de la valeur de k, maintenant vous ne pouvez pas dire quelque chose comme c'est une boucle seulement si k!=0 ou si k est True.

Donc c'est fondamentalement une boucle.