Alternative Ansätze zum Verlassen einer Schleife aus einem Schalter heraus
In bestimmten Szenarien kann es erforderlich sein, eine umschließende Schleife von innen zu beenden eine switch-Anweisung. Während die Verwendung eines Flags ein gängiger Ansatz ist, bietet C eine alternative Lösung: die Verwendung der goto-Anweisung.
Das Dilemma:
Bedenken Sie den folgenden Codeausschnitt:
<code class="cpp">while(true) { switch(msg->state) { case MSGTYPE: // ... break; // ... more stuff ... case DONE: // **HERE, I want to break out of the loop itself** } }</code>
Ziel ist es, die Schleife sofort zu verlassen, wenn der msg->state gleich DONE ist.
Mit goto:
C ermöglicht die Verwendung von die goto-Anweisung, um explizit zu einer bestimmten Stelle im Code zu springen. Dies kann genutzt werden, um das gewünschte Verhalten zu erreichen:
<code class="cpp">while ( ... ) { switch( ... ) { case ...: goto exit_loop; // Jump to this location when msg->state is DONE } } exit_loop: ; // Label for jump target</code>
Wenn msg->state in diesem modifizierten Code gleich DONE ist, leitet die goto-Anweisung den Ausführungsfluss an die Bezeichnung „exit_loop“. Dadurch werden sowohl der Schalter als auch die umschließende Schleife verlassen.
Hinweis: Es ist wichtig, Beschriftungen (:) zu verwenden, um das Ziel der goto-Anweisung zu identifizieren. Die wahllose Verwendung von goto kann zu Problemen mit Spaghetti-Code und Wartbarkeit führen.
Das obige ist der detaillierte Inhalt vonSo verlassen Sie eine Schleife innerhalb einer Switch-Anweisung in C: Verwenden Sie „goto' oder ein Flag?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!