2016-07-14 2 views
4

Ist das eine Schleife, keine Schleife oder beides eine Schleife und keine Schleife? Wenn Sie die Anzahl der Schleifen in einem Programm zählen, würden Sie das zählen?Ist das eine Schleife?

Ich bin neugierig, weil ich mit jemandem arbeite, der ein Projekt hat, das erfordert, dass er die Anzahl der Schleifen in einem Programm zählt.

+2

Es ist eine while-Schleife, trotz des falschen Wertes, also nehme ich an, dass es ist. – Jeremy

+0

Es ist so viel eine Schleife wie 'für (int i = 0; i <1; i ++) {/ * ... * /}' – pmg

+1

@Richie offensichtlich ein guter Link, aber kein Betrogener hier. –

Antwort

7

In C-Standard, C11, Kapitel §6.8.5, Iterationsanweisungen wird aufgeführt

Iteration-Anweisung:

            while (Ausdruck) statement
              doAnweisungwhile (Ausdruck) ;
              for (Ausdruck opt; Ausdruck opt; Ausdruck opt) statement
              for (Erklärung Ausdruck opt; Ausdruck opt) statement

Die do statement while (expression) ; erwähnt wird, so ja, ist es eine Schleife (Iteration) -Anweisung, unabhängig von der Anzahl von Iterationen in einer bestimmten Implementierung/Nutzung machen.

FWIW, diese Schleife einmal.

Um mehr Klarheit, quoting from Wikipedia, (emphasis Mine)

Eine Schleife ist eine Folge von Anweisungen hinzufügen, die einmal angegeben ist, aber die sein kann in mehrfach durchgeführt Nachfolge. Der Code "innerhalb" der Schleife (der Körper der Schleife, unten als xxx gezeigt) wird eine bestimmte Anzahl von Malen oder einmal für jede einer Sammlung von Elementen, oder bis eine Bedingung erfüllt ist, oder unbegrenzt befolgt.

+0

Sind alle Schleifenanweisungen dann auch unbedingt Schleifen? –

+0

@vjb Wörter können knifflig sein. Dies ist offensichtlich eine _loop-Anweisung_ mit einer Iteration von _exactly_ einmal. –

2

In gewissem Sinne, ja es ist eine Schleife, aber in Wirklichkeit nein. Es ist technisch eine Schleife, weil Sie Schleifensyntax verwenden, aber was Sie tatsächlich tun, ist nur den Code in Ihrer "Schleife" einmal auszuführen und dann zu brechen. Ich würde es nicht wirklich als eine Schleife zählen, weil Sie keine algorithmische Laufzeit zu Ihrem Programm hinzufügen, also hat es keinen Sinn, es als eine Schleife zu zählen. Hinweis: Tun Sie dies nicht, es ist sinnlos und schlechte Programmierpraxis.

EDIT: Credits Jeremy in den Kommentaren unten, gibt es mindestens einen Fall, in dem dieses Konstrukt kann in C nützlich sein: do { ... } while (0) — what is it good for?

+6

Es ist auch ein enorm weit verbreitetes Konstrukt, das in fast jedem Makro verwendet wird. –

+0

@KerrekSB Zumindest würde man es hoffen. In der Realität werden viele Makros ohne diese ... – glglgl

+0

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

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

Nun ist die Anzahl der Iterationen hängt von dem Wert von k, jetzt Sie können etwas wie es eine Schleife nur sagen, wenn k!=0 oder wenn kTrue ist.

Also ist es im Grunde eine Schleife.

Verwandte Themen