Loops in C - für () oder while () - was ist das BESTE?

7

für () oder while () - was ist das BESTE?

%Vor%

ODER

%Vor%     
aks 11.02.2010, 06:16
quelle

4 Antworten

18

Der erste ist der idiomatische Weg; Das erwarten die meisten C-Programmierer. Allerdings sollte ich beachten, dass die meisten Leute auch erwarten,

zu sehen %Vor%

Beachten Sie, dass die Schleife bei Null beginnt. Das wird etwas a mal machen. Wenn Sie eine while -Schleife schreiben wollen, die einer for -Schleife entspricht, empfehlen wir Ihnen, diese als for -Schleife zu schreiben. Wiederum erwarten C-Programmierer dies. Weiterhin ist es als eine for -Schleife einfacher zu lesen, da alles (Initialisierung, Schleifenbedingung, Ausdruck, der nach jeder Iteration auszuführen ist) alle in einer Zeile sind. Für die while -Schleife sind sie verteilt und behindern die Lesbarkeit.

Beachten Sie jedoch, dass es Fälle gibt, in denen scheinbar äquivalente for und while Schleifen tatsächlich nicht vorhanden sind. Zum Beispiel:

%Vor%

und

%Vor%

erscheinen auf den ersten Blick gleichwertig, sind es aber nicht. Die for -Schleife wird 0--9 skipping 5 auf der Konsole ausgeben, während die while -Schleife 0--4 auf der Konsole ausgibt und dann eine Endlosschleife eingibt.

Nun, das ist der einfache Fall, nach dem Sie gefragt haben. Was ist mit den komplexeren Fällen, über die Sie nicht gefragt haben? Nun, es hängt wirklich davon ab, aber eine gute Faustregel ist dies: Wenn Sie etwas eine festgelegte vorbestimmte Anzahl von Malen wiederholen wollen, ist eine for -Schleife im Allgemeinen am besten. Andernfalls verwenden Sie eine while -Schleife. Dies ist keine feste Regel, aber es ist eine gute Faustregel. Zum Beispiel könnten Sie

schreiben %Vor%

aber ich denke, die meisten C-Programmierer würden dies als

schreiben %Vor%

Oder, als ein anderes Beispiel, wenn Sie bis zum Ende einer Datei lesen, dann sollten Sie eine while Schleife verwenden. Also

%Vor%

statt

%Vor%

Nun, da ich in religiöses Territorium vordringe, bevorzuge ich while(1) als den richtigen Weg, um eine unendliche Schleife über for(;;) zu machen.

Ich hoffe, das hilft.

    
jason 11.02.2010, 06:18
quelle
3

Es kommt darauf an. Was das Lesen am einfachsten macht, sollte eine Leitlinie IMHO sein. Wenn Sie vorher Grenzen kennen, sollten Sie 'for' verwenden. Weil es in einer Zeile eindeutig sagt, wo die Schleife beginnt, endet sie und wie man von einem Element zum anderen geht.

    
Friedrich 11.02.2010 06:19
quelle
2

Stimmen Sie für Dan McG auf - wenn die Schleife eine feste Zählung hat, usw., verwenden Sie für - es ist mehr idiomatisch. Klassische Fälle von jedem:

%Vor%

Vs.

%Vor%

Außerdem: Wenn du herausfindest, dass du Bedingungen in deinem "for" auslässt, bedenke, wie es wäre, wenn du es so lange nachbilst.

Am Ende des Tages: Gehen Sie zurück und lesen Sie jede Version der Schleife. Welcher fällt Ihnen in Ihrer Absicht mehr als "klar" in der Absicht auf?

    
James 11.02.2010 06:30
quelle
1

Was macht am meisten Sinn in der Situation.

Die for -Schleife sagt Ihnen, dass es sich höchstwahrscheinlich um eine feste Zählschleife handelt. Beginnend bei 1 endet vor einem.

Die while -Schleife impliziert keine solche Sache, nur dass sie einmal i >= a endet (zumindest wenn man oben nur while (i<a){ liest).

Natürlich ist dies keine Regel, und Programmierer tun im Allgemeinen, was sie für richtig halten, aber es macht es einfach, Code zu lesen, ohne dass man zurückgehen muss, um einen Abschnitt zu verstehen.

    
Dan McGrath 11.02.2010 06:19
quelle

Tags und Links