2009-07-02 9 views

Antwort

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

Uhh ... Das ist ziemlich traurig. Emil schlug früher einreichen als ich ... Das "Akzeptierte" sollte zu ihm gehen ... – Adrien

+10

Sie haben weniger Rep, und es ist eine sehr einfache Frage, also werde ich es Ihnen gerne geben. :) –

+1

Wie jalf schon sagte: Wenn du eine do-to-loop und nicht eine do while-Schleife willst, musst du die Bedingung negieren. –

9

Wenn Sie wollen, um den Zustand zu Beginn der Schleife zu überprüfen, negieren einfach die Bedingung auf einer Standard-while Schleife:

while(!cond) { ... } 

Wenn Sie es am Ende benötigen, verwenden Sie ein do. .. while Schleife und negiert die Bedingung:

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

Sie Makros verwenden, könnten die Repeat-bis-Syntax zu simulieren.

+0

Dies ist genau das, was ich gesucht habe. Nicht sicher, wie das "exp" funktioniert. Ist es ein generischer Platzhalter? Vielen Dank! –

+1

@ Ace.C Es ist ein Argumentname. Die zweite Definition definiert ein Makro, das wie eine Funktion wirkt. In diesem Fall ist '#define bis (exp)' ein Makro mit dem Namen 'bis ', das den Parameter' exp 'annimmt und auf' while (! (Exp)) 'erweitert. –

+0

Danke @ Conor.O, gibt es vielleicht und Artikel oder einen anderen Beitrag zu diesem Thema, mit dem Sie mich verlinken könnten? Ich habe Probleme, gute Ressourcen zu finden, um diese Art von Makros zu erstellen –

2

Für ein Beispiel, wenn Sie eine Schleife haben möchten, die gestoppt wurde, wenn alle Personen in einer Gruppe gezählt wurden. Wir betrachten den Wert X als gleich der Anzahl der Personen in der Gruppe, und der Zähler wird verwendet, um alle Personen in der Gruppe zu zählen. (! Zustand) zu schreiben, um die

während

der Code sein:

int x = Menschen;

int counter = 0;

while (x = Zähler!)

{

Zähler ++;

}

zurück 0;

1

Verwenden Sie einfach:

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

Was das bedeutet ist, es bewegt sich Ihre ‚prüfen Zustand‘ Teil bis zum Ende, da die while am Ende ist. So überprüft es nur die Bedingung nach dem Ausführen des Codes, genau wie Sie es wollen

0

Wiederholen soll eine einfache Schleife sein n mal Schleife ... eine bedingungslose Version einer Schleife.

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

repeat(10) { 
    //do stuff 
} 

Sie können auch hinzufügen, auch eine zusätzliche barce das i-Variable zu isolieren, noch mehr

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

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