Eine for-Schleife hat das for
Schlüsselwort, gefolgt von Klammern mit drei optionalen Ausdrücken, die durch Semikolons getrennt sind, gefolgt von einem Textkörper, der in jeder Iteration der Schleife ausgeführt wird.
Das Ziel der for-Schleife in Ihrem Beispiel besteht darin, den Wert von count
festzulegen, mit dem zahl
in der folgenden if-Anweisung verglichen wird . Dies wird in den durch Semikolons getrennten Ausdrücken erreicht, sodass der Schleifenkörper nichts tun muss.
Da die Schleife nichts tun muss, verwendet sie die leere Anweisung als Hauptteil.
Wenn das ;
am Ende weggelassen würde und keine anderen Änderungen vorgenommen würden, würde die if-Anweisung nach der for-Schleife selbst zum Hauptteil der for-Schleife. (Das ist nicht beabsichtigt und würde das Programm brechen, wie Sie beobachtet haben.)
Es ;
ist jedoch nicht die einzige Möglichkeit, einen leeren Schleifenkörper zu schreiben, und es ist wahrscheinlich auch nicht die sinnvollste Möglichkeit , einen eigenen Schleifenkörper aus einer einzelnen Zeile in derselben Zeile zu machen. Es funktioniert einwandfrei, aber das Problem ist, dass andere Leser - und vielleicht derselbe Programmierer, der später zum Projekt zurückkehrt - sich fragen, ob es tatsächlich ein Fehler war. Schließlich gibt man beim Codieren in einer Sprache im C-Stil häufig Semikolons an den Zeilenenden ein, sodass es einfach ist, ein zusätzliches Semikolon einzugeben, wenn es nicht dazu gehört.
Das andere Problem ist , dass im Code , in dem eine einzeilige Schleife mit ;
als sein Körper ist der gewählte Stil, ist es schwer zu erkennen , wenn jemand tatsächlich hat den Fehler , Putting a gemacht , ;
wenn man nicht gehört.
Daher können diese Alternativen vorzuziehen sein:
- Setzen Sie das
;
eingerückte Zeichen in die nächste Zeile - wie sh1 vorschlägt
- Schreiben des Schleifenkörpers als leerer Block
{ }
und nicht als leere Anweisung
- Machen Sie den Schleifenkörper zu einer
continue;
Anweisung, die einfach bewirkt, dass die Schleife zur nächsten Iteration übergeht (was dasselbe ist, was passiert, wenn der Schleifenkörper leer ist) - auch wie sh1 vorschlägt