Funktioniert `break` nur für `for`, `while`, `do-while`, `switch’ und für `if`-Anweisungen?

Lesezeit: 3 Minuten

Benutzeravatar von avi
avi

Angenommen, ich habe eine if Aussage innerhalb a for Schleife:

for( ; ; )
{
  if( )
    {
     printf(" inside if");
     break;
    }//if         

  printf("inside for");
}//for

Nun, wird die break -Anweisung bewirken, dass der Compiler aus der kommt for Schleife oder wird es nur aus dem Körper kommen if einmal der Zustand in der if wird zufrieden?

  • Zu Ihrer Information, if ist keine Schleife.

    – Spikatrix

    27. September 2015 um 7:47 Uhr

  • @CoolGuy ist es auch nicht switch

    – MM

    27. September 2015 um 8:14 Uhr

  • @MM Ich weiß. Der OP hatte gesagt “if Schleife” in der vorherigen Revision und ich habe das korrigiert.

    – Spikatrix

    27. September 2015 um 8:18 Uhr

Benutzeravatar des Windows-Programmierers
Windows-Programmierer

Das break Aussage bricht aus die nächste Einfriedung Schleife oder Schalter Aussage.

break bricht nicht aus einem aus if Aussage, aber die nächste loop oder switch das enthält das if Aussage. Der Grund dafür, nicht aus einem auszubrechen if Aussage ist, weil es häufig verwendet wird, um zu entscheiden, ob Sie aus dem ausbrechen möchten loop.

Interessanterweise verhielt sich eine Telefonvermittlung falsch, weil das Unternehmen, das C genau diesen Fehler gemacht. Sie wollten aus einem ausbrechen if Aussage und sie vergaßen, dass es aus dem Ganzen herausbrechen würde for Aussage.

  • danke Herr und das war ein sehr informatives Beispiel. Ich bin mir jetzt darüber im Klaren.

    – Avi

    2. April 2010 um 8:19 Uhr

  • Das war vor rund 20 Jahren eine Neuigkeit. erelender, du kannst es genauso gut googeln wie ich, vielleicht beginnend mit Dingen wie ess software bug break.

    – Windows-Programmierer

    4. April 2010 um 23:44 Uhr

Benutzeravatar von Mark Byers
Markus Byers

Es wird ausbrechen for Schleife. EIN break Anweisung wirkt sich nur auf Schleifen aus (do, for, while) und switch Aussagen (zum Ausbruch aus a case).

Von dem C99-StandardAbschnitt 6.8.6.3:

Einschränkungen

Eine Break-Anweisung darf nur in oder als Switch- oder Loop-Body erscheinen.

Semantik

Eine break-Anweisung beendet die Ausführung des kleinsten einschließenden Schalters oder der kleinsten Iterationsanweisung.

break wird nicht aus einer if-Klausel ausbrechen, sondern aus der nächsten Schleife oder der switch-Klausel. Außerdem wird eine if-Klausel nicht als “Schleife” bezeichnet, da sie ihren Inhalt niemals wiederholt.

Die Break-Anweisung wirkt sich nur auf Schleifen und Switch-Klauseln aus. In jedem Fall wird es aus der nächsten umschließenden Schleife herauskommen. Es ist eine gute Praxis, einen bedingten Bruch zu verwenden, dh einen Bruch, der von einer if-Anweisung eingeschlossen ist. Wenn Sie aus allen Schleifen oder einer Schleife herauskommen möchten, können Sie die goto-Anweisung verwenden. Zum Beispiel:

while(true) {
     while (some_condition) {
          if (some_condition)
               goto label;
     }
}
label: // do something here

Die Break-Anweisung unterbricht keine if- oder else-Anweisung. Wenn Sie eine Break-Anweisung verwenden, kommt sie hauptsächlich aus der nächsten Schleife (For-Schleife, While-Schleife, Do-While-Schleife und Switch-Case).

Benutzeravatar des coolen Mädchens
Cooles Mädchen

Die Break-Anweisung hat keinen Nutzen in Entscheidungsfindungsaussagen. Es wird nur in Schleifen verwendet, wenn Sie die Beendigung der Schleife erzwingen und die Ausführung von der Anweisung nach der Schleife fortsetzen möchten. Es gibt keine Frage von “wird break-Anweisung dazu führen, dass die Kontrolle aus der if-Anweisung herauskommt, wenn die Bedingung wahr ist”, denn unabhängig von der break-Anweisung wird die Kontrolle sowieso aus der if-Anweisung herauskommen, wenn die Bedingung wahr ist und sobald ihr Körper wahr ist hingerichtet. Die if-Anweisung ist keine Schleife. sie wird entweder gar nicht oder nur einmal ausgeführt. Es macht also absolut keinen Sinn, eine Pause in den Körper von if einzubauen.

1388440cookie-checkFunktioniert `break` nur für `for`, `while`, `do-while`, `switch’ und für `if`-Anweisungen?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy