Was ist der Unterschied zwischen while-Schleife und do-Schleife. Früher dachte ich, dass beide völlig gleich sind. Dann stieß ich auf folgenden Code:
do {
printf("Word length... ");
scanf("%d", &wdlen);
} while(wdlen<2);
Dieser Code funktioniert einwandfrei. Es gibt die Wortlänge aus und tascans die Eingabe. Aber als ich es geändert habe
while(wdlen<2){
printf("Word length... ");
scanf("%d", &wdlen);
}
Es gibt einen leeren Bildschirm. Es geht nicht. Es gibt also einen funktionalen Unterschied zwischen beiden Schleifen. Kann das jemand erklären? Danke im Voraus.
EDIT: Gibt es einen anderen Unterschied zwischen diesen beiden?
Die do while - Schleife führt den Inhalt der Schleife einmal aus, bevor der Zustand der while überprüft wird.
Während eine while - Schleife die Bedingung zuerst überprüft, bevor der Inhalt ausgeführt wird.
In diesem Fall warten Sie auf eine Benutzereingabe mit scanf (), die niemals in der while -Schleife ausgeführt wird, da wdlen nicht initialisiert wird und möglicherweise nur einen Speicherwert enthält, der größer als 2 sein kann.
While : Ihre Bedingung befindet sich am Anfang des Loop-Blocks und ermöglicht es , niemals in die Loop einzutreten.
Do While : Ihre Bedingung befindet sich am Ende des Schleifenblocks und verpflichtet , mindestens einmal in die Schleife einzutreten.
do {
printf("Word length... ");
scanf("%d", &wdlen);
} while(wdlen<2);
Eine do-while
-Schleife garantiert die Ausführung der Schleife mindestens einmal, da sie die Schleifenbedingung NACH der Schleifeniteration überprüft. Daher wird der String ausgegeben und scanf aufgerufen, wodurch die Variable wdlen aktualisiert wird.
while(wdlen<2){
printf("Word length... ");
scanf("%d", &wdlen);
}
Die while
-Schleife wertet die Schleifenbedingung aus, BEVOR der Schleifenkörper ausgeführt wird. wdlen
beginnt wahrscheinlich mit mehr als 2 in Ihrem Code, deshalb erreichen Sie den Schleifenkörper niemals.
tun, während in einer Exit-Steuerschleife .. .. während eine Eingabesteuerschleife ist.
Der Unterschied besteht darin, wann die Bedingung ausgewertet wird. In einer do..while
-Schleife wird die Bedingung bis zum Ende jeder Schleife nicht ausgewertet. Das bedeutet, dass eine do..while
-Schleife immer mindestens einmal ausgeführt wird. In einer while
-Schleife wird die Bedingung zu Beginn ausgewertet.
Hier gehe ich davon aus, dass wdlen
zu Beginn der while
-Schleife den Wert false ergibt (d. H., Es ist größer als 1), sodass die while-Schleife niemals ausgeführt wird. In der do..while
-Schleife wird sie bis zum Ende der ersten Schleife nicht geprüft, sodass Sie das erwartete Ergebnis erhalten.
Do while -Schleife wird mindestens einmal ausgeführt ......., aber while -Schleife prüft zuerst die Bedingung und kann je nach Bedingung ausgeführt werden.
In Ihrem Beispiel kann wdlen einen beliebigen Garbage-Wert annehmen, der> 2 ist, so dass die while-Schleife nie ausgeführt wird.
do while loop wird ausgeführt und fordert u auf, den Wert einzugeben und den Wert in der Beendigungsbedingung zu überprüfen
Während:
eingangssteuerschleife
die Bedingung wird vor der Ausführung der Schleife geprüft
führen Sie niemals eine Schleife aus, wenn die Bedingung falsch ist
es gibt kein Semikolon am Ende einer while-Anweisung
Do-while:
steuerschleife verlassen
die Bedingung wird am Ende der Schleife geprüft
führt eine falsche Bedingung mindestens einmal aus, da die Bedingung später geprüft wird
am Ende der while-Anweisung steht ein Semikolon.
Der wichtigste Unterschied zwischen while
und do-while
-Schleife besteht darin, dass in do-while
der Codeblock mindestens einmal ausgeführt wird, obwohl die angegebene Bedingung falsch ist.
Um es anders auszudrücken:
Wahrscheinlich beginnt wdlen
mit einem Wert> = 2, so dass im zweiten Fall die Schleifenbedingung anfangs falsch ist und die Schleife niemals betreten wird.
Im zweiten Fall wird der Schleifenkörper ausgeführt, bevor die wdlen<2
-Bedingung zum ersten Mal geprüft wird, so dass printf
/scanf
mindestens einmal ausgeführt wird.
while testet die Bedingung, bevor Anweisungen innerhalb der while -Schleife ausgeführt werden.
do while testet die condition, nachdem statement innerhalb der Schleife ausgeführt wurde.
quelle: lassen Sie uns C
testen Sie die Bedingung before , um Anweisungen in der while-Schleife auszuführen.
testen Sie die Bedingung after , wenn Sie die Anweisung innerhalb der Schleife ausgeführt haben.
Der Unterschied zwischen einem while
-Konstrukt aus Schritt 1 und einem do while
besteht darin, dass alle Ausdrücke im do {}
mindestens einmal ausgeführt werden, unabhängig von der Bedingung in der while()
-Klausel.
println("\nStep 2: How to use do while loop in Scala")
var numberOfDonutsBaked = 0
do {
numberOfDonutsBaked += 1
println(s"Number of donuts baked = $numberOfDonutsBaked")
} while (numberOfDonutsBaked < 5)
Hier ist eine detaillierte Erklärung: Erklärung Besuch: coderforevers
Do while -Schleife wird mindestens einmal ausgeführt ......., während While-Schleife zuerst die Bedingung überprüft und dann abhängig von der Bedingung ..__ möglicherweise nicht ausgeführt wird. While: Ihre Bedingung befindet sich am Anfang des Schleifenblocks und ermöglicht es, niemals in die Schleife einzutreten.
Do While: Ihr Zustand befindet sich am Ende des Loop-Blocks und ist obligatorisch, um mindestens einmal in die Loop einzutreten.
In WHILE zuerst die Bedingung prüfen und dann das Programm ausführen. In der DO-WHILE-Schleife das Programm mindestens einmal ausführen und dann die Bedingung überprüfen
Der Unterschied zwischen do while (Ausgangsprüfung) und While (Eingangsprüfung) besteht darin, dass während des Einstiegs in do zwar nicht geprüft wird, aber zuerst, während es zuerst überprüft wird
Das Beispiel ist so:
Programm 1:
int a=10;
do{
System.out.println(a);
}
while(a<10);
//here the a is not less than 10 then also it will execute once as it will execute do while exiting it checks that a is not less than 10 so it will exit the loop
Programm 2:
int b=0;
while(b<10)
{
System.out.println(b);
}
//here nothing will be printed as the value of b is not less than 10 and it will not let enter the loop and will exit
Ausgabe Programm 1:
10
Ausgabe Programm 2:
[nichts wird gedruckt]
Hinweis:
ausgabe von Programm 1 und Programm 2 ist gleich, wenn wir a = 0 und b = 0 zuweisen und auch a ++ setzen; und b ++; im jeweiligen Programmkörper.
While-Schleife:
while(test-condition)
{
statements;
increment/decrement;
}
Do While-Schleife:
do
{
statements;
increment/decrement;
}while(test-condition);
Weitere Informationen zu diesem Thema finden Sie hier: Unterschied zwischen While und Do While Loop
Dies gilt auch für die C-Programmierung, Java-Programmierung und andere Sprachen, da die Konzepte gleich bleiben, nur die Syntax ändert sich.
Ein weiterer kleiner, aber bemerkenswerter Faktor ist, dass die do while-Schleife aus einem Semikolon am Ende der while-Bedingung besteht.