10 Stimmen

Warum Endlosschleifen verwenden?

Ein anderer Poster fragte nach bevorzugte Syntax für Endlosschleifen .

Eine Folgefrage: Warum Verwenden Sie in Ihrem Code Endlosschleifen? Ich sehe normalerweise ein Konstrukt wie dieses:

for (;;) {
  int scoped_variable = getSomeValue();
  if (scoped_variable == some_value) {
    break;
  }
}

Damit kann man umgehen, dass man den Wert von scoped_variable nicht in der for o while Klausel. Welche anderen Verwendungsmöglichkeiten gibt es für "Endlosschleifen"?

30voto

Tony Meyer Punkte 9701

Eine Schleife wie:

while (true)
{
    // do something
    if (something else) break;
    // do more
}

ermöglicht den Ausstieg aus der Schleife in der Mitte und nicht am Anfang (while/for) oder am Ende (do-while).

Wenn Sie eine komplexe Bedingung haben, können Sie diesen Stil auch verwenden, um den Code übersichtlicher zu gestalten.

13voto

AShelly Punkte 33678

Ich verwende eine Endlosschleife für den Hauptteil meines eingebetteten Steuercodes, da dieser, sobald er einmal gestartet wurde, ewig laufen soll.

9voto

Menkboy Punkte 1565
while( 1 )
{
    game->update();
    game->render();
}

Editar: Das heißt, meine Anwendung basiert im Wesentlichen auf einer Endlosschleife, und ich kann nicht die Mühe machen, alles zu überarbeiten, nur um die ästhetische Reinheit zu haben, immer durch das Fallen am Ende von main() zu beenden.

8voto

Endliche Zustandsautomaten. Sie sollen erst enden, wenn man einen Endzustand erreicht hat, zu dem man dann abbricht oder zurückkehrt.

4voto

staticsan Punkte 29057

Das ist ein unvollständiges Beispiel, weil es ohne Verlust an Klarheit, Funktion oder Leistung zu einer Endtestschleife umstrukturiert werden kann.

int scoped_variable;
do {
    scoped_variable = getSomeValue();
} while (scoped_variable != some_value);

Endlosschleifen werden am häufigsten verwendet, wenn die Schleifeninstanz nicht im einfachsten Fall den Abschlusstest am oberen oder unteren Ende durchführen. Dies geschieht in der Regel, wenn die Schleife aus zwei Teilen besteht: Code, der jedes Mal ausgeführt werden muss, und Code, der nur zwischen den einzelnen Iterationen ausgeführt werden muss. Dies ist in Sprachen wie C der Fall, wenn es um Dinge wie das Lesen aus einer Datei oder die Verarbeitung einer Datenbankergebnismenge geht, bei der vieles explizit ausgeführt werden muss. Die meisten Sprachen mit neueren Paradigmen können solchen Code tatsächlich in den Test einbauen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X