2009-07-02 19 views

Respuesta

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

Uhh ... Esto es bastante triste. Emil presionó enviar antes de lo que lo hice ... El "aceptado" debería ir a él ... – Adrien

+10

Tienes menos representante, y es una pregunta extremadamente simple, así que con mucho gusto te la daré. :) –

+1

Como dijo jalf, sin embargo: si quieres un bucle do hasta que no sea do while, deberás negar la condición. –

9

Cuando desee comprobar el estado al inicio del bucle, simplemente negar la condición de un bucle estándar while:

while(!cond) { ... } 

Si lo necesita, al final, utilice un do. .. while bucle y niega la condición:

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

Se podría utilizar macros para simular la repetición, hasta que la sintaxis.

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

Esto es exactamente lo que estaba buscando. No estoy seguro de cómo funciona el "exp". ¿Es un comodín genérico? ¡Gracias! –

+1

@ Ace.C Es un nombre de argumento. El segundo '# define' crea una macro, que actúa como una función. Entonces, en este caso, '#define until (exp)' es una macro llamada 'until' que toma un parámetro' exp', y se expande a 'while (! (Exp))'. –

+0

Gracias @ Conor.O, ¿hay algún artículo u otra publicación sobre este tema al que me puedas vincular? Tengo problemas para encontrar buenos recursos sobre cómo hacer este tipo de macros –

2

Por ejemplo, si desea tener un bucle que se detenga cuando haya contado a todas las personas de un grupo. Consideraremos que el valor X es igual al número de personas en el grupo, y el contador se usará para contar a todas las personas del grupo. (! Condiciones) para escribir el

mientras

el código será:

int x = pueblo;

int counter = 0;

mientras que (x = contador!)

{

contador ++;

}

return 0;

1

sólo tiene que utilizar:

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

Así que lo que hace es, se mueve a su 'comprobar si hay condiciones' parte hasta el final, ya que el while es al final. Por lo tanto, solo comprueba la condición después de ejecutar el código, al igual que la forma en que lo desea

0

Se supone que la repetición es un bucle simple n veces el bucle ... una versión sin condiciones de un bucle.

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

repeat(10) { 
    //do stuff 
} 

que también puede también añadir una barce extra para aislar la variable i aún más

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

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