"Break;" aus "if" statement?

Können Sie brechen aus einer if-Anweisung oder wird es da zu Abstürzen führen? Ich fange an, vertraut zu machen mich mit C, aber dies scheint umstritten. Das erste Bild ist aus einem Buch über C
("Head First C") und das snippet zeigt code geschrieben von Harvard CS-Klassen-Personal. Was ist tatsächlich passiert und hat es etwas zu tun mit dem C-Normen?

bricht nicht brechen, wenn Sie Aussagen.

Am Januar 15, 1990, AT&T - Langstrecken-Telefon-system ist abgestürzt, und 60.000 Menschen verloren Ihr Telefon-service. Die Ursache ist? Ein Entwickler arbeitet an der C-code verwendet, in dem der Austausch versucht, eine break zu brechen, die aus einem if - Anweisung. Aber breaks brechen nicht aus ifs. Stattdessen wird das Programm übersprungen, einen ganzen Abschnitt von code und führte ein bug, unterbrochen von 70 Millionen Telefonate über neun Stunden.

for (size = 0; size < HAY_MAX; size++)
{
    //wait for hay until EOF
    printf("\nhaystack[%d] = ", size);
    int straw = GetInt();
    if (straw == INT_MAX)
        break;

    //add hay to stack
    haystack[size] = straw;
}
printf("\n");

InformationsquelleAutor der Frage Nick_Tsaftaridis | 2014-07-12

Schreibe einen Kommentar