Einfache do-while-Schleife mit while(true);
Viele mal in die Beispiele von C-Programmen, stieß ich auf diese Art von Schleifen. Was tun diese Art von Schleifen wirklich tun?
do {
while (...) //Check some condition if it is true.
{
calculation 1
}
//Some new condition is checked.
} while(true);
Was ist die Notwendigkeit der while(true);
Wird es verwendet für die unendlichen Schleife? Kann mir bitte jemand erklären, was die obige Schleife funktioniert wirklich. Ich bin neu in der C-Programmierung
- Ich habe noch nie gesehen
do while(true)
. Es ist eine unendliche Schleife, aber die idiomatische (und klaren) Weg zu schreiben, wennfor (;;)
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Schleifen werden verwendet, wenn man will, um eine Schleife für immer und das ausbrechen Bedingung aus der Schleife, ist nicht bekannt. Certiain Bedingungen innerhalb der Schleife zusammen mit Pause oder zurück Aussagen zu kommen, aus der Schleife.
Zum Beispiel:
Diese Schleifen sind genau wie alle anderen while-Schleife mit Bedingung, um die Schleife zu stoppen ist im Körper der while-Schleife, sonst läuft Sie ewig (das ist nie die Absicht, einen Teil des Codes, bis Sie benötigt so).
Es hängt von der Logik der Programmierer nur das, was er/Sie tun möchte.
ja es ist für die unendliche Schleife,in diesem Fall die beste Vorgehensweise ist, um aus Blick auf einen Zustand
In C alle Schleifen Durchlaufen, solange eine Bedingung wahr ist. So eine explizite
true
in dem Zustand wirklich bedeutet "Schleife, währendtrue
wahr ist" und so Schleifen immer.for(;;)
wo oder was ist die Bedingung? 🙂for
- Schleife ist äquivalent zu einemwhile
Schleife, und §2 Ziffer 6.5.3 sagt "Eine fehlende Bedingung macht die implizitewhile
Klausel entsprichtwhile(true)
"Diese Schleife ist unendlich, und wenn Sie, was Ihr Programm immer terminiert mit solchen lop müssen Sie entweder eine
break
oder einereturn
(oder in einigen Fällen eine exception zu werfen) - Anweisung unter einer bestimmten Bedingung in einer solchen Schleife sonst ist das Programm nie beendet.goto
...Einer Endlosschleife ist nützlich, wenn die überprüfung der stop-Zustand kann es nicht sein fertig in der front (wie bei
for
undwhile
), noch hinten (wie beido{}while
). Statt Sie nur eine unendliche Schleife und in der Mitte des Codes können Sie überprüfen eine Bedingung und brechen:if(something) break;
.manchmal verwenden wir es zum Beispiel :
einem Beispiel aus der winsock-windows-api, so können Sie hören von einem port.
Diese Schleife läuft unendlich, und es kann dazu führen, in ein runtime erorr also, wenn nicht gestoppt. Wenn Sie diese Art von Schleife, sicher sein, dass eine break-Anweisung im inneren, um sicherzustellen, dass die Schleife irgendwann aufhört.
Ähnlich wie diese
Wenn Ihr Programm erreicht irgendwann where-Bedingung wahr ist, wird es automatisch mit Ende der do-while-Schleife und gehen Sie zu dem code, dass nach.
Den Allgemeinen Unterscheidungsmerkmal zwischen folgenden Schleifen:
ist, dass der ehemalige wird verwendet, für Schleifen, die passieren null oder mehrere Male während letztere für Schleifen, die passieren eine oder mehr Zeit.
In anderen Worten, die Bedingung für
while
geprüft am Anfang der Schleife, und fürdo while
es geprüft, ist am Ende.Oft sehen Sie code, wo die Entwickler scheinen nicht zu wissen über
do-while
in, dass Sie schreiben:könnte besser geschrieben als:
Jedoch in Ihrem speziellen Fall, wo die Bedingung ist immer
true
es spielt eigentlich keine Rolle. Die folgenden Schleifen sind im Grunde gleichwertig (mit1
für den true-Fall):Den ersten
for
Schleife ist wohl das kanonische Weise eine unendliche Schleife, die die Tatsache ausnutzen, dass, wenn Sie weglassen die Fortsetzung Bedingung für die Schleife, es meint es immer wahr.Zweiten
for
Schleife ist nur das verschieben der Schleife in der pro-iteration ein Teil derfor
- Anweisung.Den ersten
while
ist auch manchmal in der wildnis gesehen, diedo-while
wohl weniger so. Der einzige Unterschied hier ist, dass die ehemaligen Schleifen immer die Kontrolle bei der Schleife oben, der letztere Schleifen immer die Kontrolle bei der Schleife unten.Den letzten
while
Schleife ist mit dem C Komma-operator in einer Weise, die Sie wahrscheinlich nie sollte 🙂Dass Letzte ist sehr selten heutzutage, aber ist wahrscheinlich das, was Sie alle optimieren Sie unten, um auf der Maschinencode-Ebene.