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"?

4voto

emory Punkte 10495

Ich würde in Erwägung ziehen, eine Endlosschleife zur Programmierung des Lenksystems einer Rakete zu verwenden.

while ( true ) { go2Target ( ) ; }

Aus der Sicht des Steuerungscomputers der Rakete wiederholt sich die einmal begonnene Schleife bis zum Ende der Zeit.

Vielleicht würde ein Purist Folgendes bevorzugen

while ( ! blown2Bits ( ) ) { go2Target ( ) ; }

aber wie implementieren Sie dann die Methode blow2Bits? Was würde es bedeuten, wenn blow2Bits true zurückgibt?

3voto

Gary Willoughby Punkte 48229

Nahezu alle Anwendungen verwenden eine unendlich Hauptschleife . ;)

2voto

Greg Beech Punkte 127525

Ein Beispiel ist ein Szenario mit einer Nachrichtenpumpe, bei dem Sie alle eingehenden Nachrichten in einer Endlosschleife verarbeiten wollen, bis Sie aufgefordert werden, damit aufzuhören. Ein anderes Beispiel ist, wenn Sie eine periodische Aktion durchführen wollen, dann könnten Sie eine Endlosschleife mit einem Sleep darin schreiben (obwohl es vielleicht besser ist, eine Form von Timer dafür zu verwenden).

Es mag einige andere Stellen geben, an denen die Schleife einen gewissen Aufwand betreiben muss, um festzustellen, ob sie beendet werden soll, und es mag sauberer sein, einfach die Funktion break wenn diese Bedingung erfüllt ist, anstatt ein externes Flag zu setzen, um anzuzeigen, dass die Schleife beendet werden soll.

Im Allgemeinen halte ich es jedoch für besser, die Ausstiegsbedingung in die Schleifenanweisung zu setzen, anstatt sie unendlich zu machen und die Schleife mit einer break Anweisung, da die Austrittsbedingung der Schleife offensichtlicher ist.

1voto

Draemon Punkte 32703

Es gibt noch weitere Fragen, die sich darauf beziehen, ob und wann es in Ordnung ist, die break in einer Schleife. Gehen wir davon aus, dass wir uns einig sind, dass das manchmal in Ordnung ist. Unter diesen (hoffentlich seltenen) Umständen würde ich eine Endlosschleife verwenden, wenn es eine Reihe von Abbruchbedingungen und keine identifizierbare "primäre" Abbruchbedingung gibt.

Dadurch wird eine lange Reihe von Disjunktionen (oder) vermieden und der Leser wird darauf aufmerksam gemacht, dass es in der Schleife zu Unterbrechungen kommen kann (und mit Sicherheit kommen wird).

Letztlich ist es eine Frage des Geschmacks.

1voto

Chris Kloberdanz Punkte 4356

Ich verwende sie, um Linux-Daemons/Dienste zu schreiben, die in einer Schleife laufen, bis Kill- oder andere Beendigungssignale empfangen werden.

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