2009-07-02 12 views

Répondre

35
do 
{ 
    // whatever 
} while (!condition); 
+3

... Ce Uhh supplémentaire est assez triste. Emil a frappé soumettre plus tôt que je l'ai fait ... Le "accepté" devrait aller à lui ... – Adrien

+10

Vous avez moins rep, et c'est une question extrêmement simple, donc je vais vous donner avec plaisir. :) –

+1

Comme jalf l'a dit, cependant: Si vous voulez faire une boucle while plutôt qu'une boucle while do, vous devrez annuler la condition. –

9

Lorsque vous voulez vérifier l'état au début de la boucle, nier simplement la condition sur une boucle while standard:

while(!cond) { ... } 

Si vous avez besoin à la fin, utilisez un do. .. boucle while et annule la condition:

do { ... } while(!cond); 
7

Vous pouvez utiliser des macros pour simuler la répétition jusqu'à ce que la syntaxe.

#define repeat do 
#define until(exp) while(!(exp)) 
+0

C'est exactement ce que je cherchais. Je ne sais pas comment le "exp" fonctionne bien. Est-ce un joker générique? Je vous remercie! –

+1

@ Ace.C C'est un nom d'argument. La deuxième '# define' fait une macro, qui agit comme une fonction. Donc, dans ce cas, '#define until (exp)' est une macro nommée 'until' qui prend un paramètre' exp', et se développe en 'while (! (Exp))'. –

+0

Merci @ Conor.O, Y at-il peut-être un article ou un autre article sur ce sujet que vous pourriez me lier? J'ai de la difficulté à trouver de bonnes ressources pour faire ces sortes de macros –

2

Pour un exemple si vous souhaitez qu'une boucle s'arrête lorsqu'elle a compté toutes les personnes d'un groupe. Nous considérerons la valeur X comme égale au nombre de personnes dans le groupe, et le compteur sera utilisé pour compter toutes les personnes du groupe. (! Condition) Pour écrire le

tout

le code sera:

int x = personnes;

int compteur = 0;

while (x = compteur!)

{

compteur ++;

return 0;

1

utiliser Just:

do 
{ 
    //enter code here 
} while (!condition); 

Alors qu'est-ce que cela fait est, il déplace votre part « vérifier l'état » à la fin, puisque le while est à la fin. Donc, il ne vérifie la condition qu'après avoir exécuté le code, tout comme vous le voulez

0

Répéter est supposé être une simple boucle n fois boucle ... une version sans condition d'une boucle.

#define repeat(n) for (int i = 0; i < n; i++) 

repeat(10) { 
    //do stuff 
} 

vous pouvez également ajouter un barce pour isoler la variable i encore plus

#define repeat(n) { for (int i = 0; i < n; i++) 
#define endrepeat } 

repeat(10) { 
    //do stuff 
} endrepeat;