web-dev-qa-db-de.com

Unterschied zwischen "while" -Schleife und "do while" -Schleife

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?

30
narayanpatra

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.

55
hydrogen

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.

17
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.

3
Mahmoud

tun, während in einer Exit-Steuerschleife .. .. während eine Eingabesteuerschleife ist.

2
sriram

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.

1
Stephen

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

1
SPB

Während:

  1. eingangssteuerschleife

  2. die Bedingung wird vor der Ausführung der Schleife geprüft

  3. führen Sie niemals eine Schleife aus, wenn die Bedingung falsch ist

  4. es gibt kein Semikolon am Ende einer while-Anweisung

Do-while:

  1. steuerschleife verlassen

  2. die Bedingung wird am Ende der Schleife geprüft

  3. führt eine falsche Bedingung mindestens einmal aus, da die Bedingung später geprüft wird

  4. am Ende der while-Anweisung steht ein Semikolon.

1
Unnati shah

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:

  • While- Ihr Zustand befindet sich am Anfang des Schleifenblocks und ermöglicht es, niemals in die Schleife einzutreten.
  • In der While-Schleife wird zuerst die Bedingung getestet und dann der Codeblock ausgeführt, wenn das Testergebnis wahr ist.
0
Yasar Khan

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.

0
sth

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

0
Prime

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.

0
BOUKERI Besmen

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

0
Ashish Yadav

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.

0
Kashif ashraf

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 

0
IV REDDY

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.

0
Runni Kumari

While-Schleife:

while(test-condition)
{
      statements;
      increment/decrement;
}
  1. Kürzere Ausführungszeit und -geschwindigkeit
  2. Eintrittsbedingte Schleife
  3. Keine feste Anzahl von Iterationen

Do While-Schleife:

do
{
      statements;
      increment/decrement;
}while(test-condition);
  1. Höhere Ausführungszeit und -geschwindigkeit
  2. Beenden Sie die bedingte Schleife
  3. Mindestens eine Iterationszahl

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.

0
Tushar Soni