Wann verwendet man die for-Schleife gegenüber der while-Schleife?
Wir können for-Schleife und while-Schleife für den gleichen Zweck.
was bedeutet, dass Sie Wirkung unser code, wenn ich nicht während? dieselbe Frage entsteht zwischen if-else und switch-case? wie zu entscheiden, was zu verwenden?
zum Beispiel, die man Sie lieber?
Diesem code:
int main()
{
int n = 10;
for(int i=0;i<n;i++)
{
do_something();
}
return 0;
}
Oder dieser code:
int main()
{
int n=10,i=0;
while(i<n)
{
do_something();
i++;
}
return 0;
}
wenn mit for oder while-Schleife bewirkt nicht den code mit allen Mitteln, dann kann ich wissen, Was die machen müssen, 2 die Lösung für das gleiche problem?
- Entfernt das C-tag, da gibt es keine
cin
in C. - stackoverflow.com/questions/2950931/...
- Ich leicht verändert, den Titel und setzen Sie den [c] tag zurück nach entfernen der
cin
da diese Frage sicherlich erstreckt sich über den gesamten C/C++ - Programmierer base.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie wissen, dass die Anzahl der Iterationen der Schleife ausgeführt werden soll, vorab, ich würde empfehlen, die
for
konstruieren. While-Schleifen sind gut für wenn die Schleife die abschließende Bedingung geschieht in einigen noch-zu-sein bestimmt Zeit.Verwenden, je nachdem was man macht die Absicht der code deutlichsten.
Ich versuche lieber die
for
Schleife. Warum? Weil wenn ich sehe einfor
Schleife, kann ich erwarten, dass alle loop-bookeeping gehalten wird, in einer einzigen Anweisung. Kann ich einfügenbreak
odercontinue
Aussagen, ohne sich Gedanken darüber zu brechen, wie die Schleife arbeitet. Und am wichtigsten ist, ist der Körper der Schleife konzentriert sich auf das, was Sie tatsächlich wollen, dass der loop zu tun, anstatt die Aufrechterhaltung der Schleife selbst. Wenn ich sehe, dass einewhile
, dann muss ich mal schauen und zu verstehen, die gesamte loop-Körper, bevor ich verstehen kann, was iteration pattern der Schleife verwendet.Der einzige Ort, den ich am Ende mit
while
ist für die wenigen Fälle, in denen die Steuerung der Schleife wird bereitgestellt durch eine externe routine (d.h.FindFirstFileW
)Es ist alles eine Frage der persönlichen Meinung, obwohl. Viele Menschen wissen nicht, wie das, was ich am Ende dabei mit
for
Schleifen, weil der loop-Anweisung, endet oft über mehrere Zeilen.Im Allgemeinen eine
for
Schleife könnte besser sein, für einfache Schleifen, da die Logik der Schleife enthalten ist in einer einzelnen Zeile auf:for (int i = 0; i < 10; ++i) {...}
Allerdings, manchmal brauchen wir eine komplexere Logik oder flow-control. Ein
while
Schleife ermöglicht uns die Umsetzung komplizierter Schleifen. Zum Beispiel, nehmen wir an, wir wollen nur das Inkrementieren der Zählvariable unter bestimmten Bedingungen:for(int i = 0;i < 10;)
und Sie haben die gleiche Schleife. (Und haben den Vorteil, dass eine Beschränkung des Anwendungsbereichs wenni
).while
ist völlig überflüssig, da jederwhile (condition)
ersetzt werden kann, mitfor (;condition;)
. Es ist subjektiv, aber ich denkewhile
möglicherweise eine klarere Wahl, wenn der Zähler-variable aktualisiert wird, bedingt, da jemand liest der code in der Regel erwartet, dass eine typischefor
- Schleife, um eine (nicht-bedingte) Zähler-variable aktualisieren.Verwenden Sie einfach die eine, die macht den code lesbar und logisch.
In einigen Fällen wird der compiler (gcc zumindest) wird in der Lage sein, zu optimieren, ein sehr geringfügig besser als eine for-Schleife macht das gleiche. Wenn ich mich richtig erinnere, dass die Optimierung ist nur über die paar Taktzyklen, so dass es wohl nie werden haben keine spürbaren Auswirkungen auf die Leistung.
Können Sie nicht schreiben
while(int i=0, i < n)
; das heißt, Sie haben zu definiereni
vor derwhile
loop; bedeuteti
existiert sowohl innerhalb als auch außerhalb der Schleife.Jedoch im Falle der
for
- Schleife, definieren Siei
rechts in diefor
Schleife selbst; und soi
existiert nicht außerhalb der Schleife. Das ist ein Unterschied. Nur weil dieser Unterschied, wie ichfor
mehr alswhile
. Und verwendenwhile
selten, wennfor
macht die Sache eher umständlich!Gibt es einige sehr subtile Unterschiede..
for
Schleifei
hat lokalen Gültigkeitsbereich, mit einemwhile
dies muss definiert werden, bevor Sie (was bedeutet, dass es verfügbar ist, nach, natürlich können Sie tun, mitfor
als gut..)continue
mitfor
loop, variable erhöhen/dekrementiert, mit einemwhile
, Sie würde zu legen Sie den Vorgang vorcontinue
Ehrlich, wenn Sie brauchen, um zu erhöhen/verringern, eine
for
Schleife macht Sinn, wenn Sie nicht wissen, die Grenzen, und es gibt keine wirkliche Inkrement/Dekrement, einwhile
Schleife mehr Sinn macht, z.B.Keineswegs beeinflussen Sie Ihr Programm so funktioniert es ! Ihr die Sache erleichtern, besser zu verstehen.
Allerdings ist es eine Frage des Geschmacks. Ich bevorzuge
switch
.