web-dev-qa-db-ja.com

「while」ループと「do while」ループの違い

Whileループとdo whileループの違いは何ですか。以前は両方ともまったく同じだと思っていましたが、次のコードに出くわしました:

do {
        printf("Word length... ");
        scanf("%d", &wdlen);
    } while(wdlen<2);

このコードは完全に機能します。 Wordの長さを出力し、入力をスキャンします。しかし、私がそれを変更したとき

while(wdlen<2){
        printf("Word length... ");
        scanf("%d", &wdlen);
    } 

空白の画面が表示されます。動作しません。そのため、両方のループ間に機能的な違いがあります。誰でも説明できますか?前もって感謝します。

編集:これら2つに他の違いはありますか?

33
narayanpatra

do whileループは、whileの状態をチェックする前にループの内容を1回実行します。

一方、whileループは、コンテンツを実行する前に最初に条件をチェックします。

この場合、scanf()でユーザー入力を待機しています。wdlenは初期化されておらず、2より大きい可能性のあるガベージ値が含まれている可能性があるため、whileループでは実行されません。

57
hydrogen

While:条件はループブロックの先頭にあり、がループに入らないようにします

Do While:条件はループブロックの最後にあり、少なくとも1回はループに入ることが必須になります

18
do {
    printf("Word length... ");
    scanf("%d", &wdlen);
} while(wdlen<2);

do-whileループは、ループの反復後にループ条件をチェックするため、少なくとも1回はループの実行を保証します。したがって、文字列を出力してscanfを呼び出し、wdlen変数を更新します。

while(wdlen<2){
    printf("Word length... ");
    scanf("%d", &wdlen);
} 

whileループについては、ループ本体が実行される前にループ条件を評価します。 wdlenはおそらくコードで2を超える値から始まるため、ループ本体に到達することはありません。

3
Mahmoud

一方:

  1. 進入制御ループ

  2. ループ実行前に条件がチェックされます

  3. 条件が偽の場合、ループを実行しない

  4. whileステートメントの最後にセミコロンはありません

Do-while:

  1. 制御ループを終了する

  2. 条件はループの終わりでチェックされます

  3. 条件は後でチェックされるため、偽条件を少なくとも1回実行します

  4. whileステートメントの最後にセミコロンがあります。

2
Unnati shah

出口制御ループ内で実行します。 whileは、エントリ制御ループです。

2
sriram

違いは、条件が評価されるタイミングです。 do..whileループでは、各ループの終わりまで条件は評価されません。つまり、do..whileループはalways少なくとも1回実行されます。 whileループでは、条件は開始時に評価されます。

ここでは、wdlenループの開始時にwhileがfalse(つまり、1よりも大きい)と評価されているため、whileループは実行されません。 do..whileループでは、最初のループの終わりまでチェックされないため、期待どおりの結果が得られます。

1
Stephen

Do whileループは少なくとも1回実行されます.......しかしwhileループは最初に条件をチェックしてから、条件に応じて実行される場合と実行されない場合があります。

あなたの例では、wdlenは2以上のガーベッジ値を想定しているため、whileループは決して実行されません。

一方、do whileループが実行され、uに値を入力して終了条件でその値を確認するように指示します

1
SPB

whiledo-whileループの最も重要な違いは、do-whileでは、指定された条件が偽であっても、コードのブロックが少なくとも1回実行されることです。

別の方法で配置するには:

  • While-条件はループブロックの開始点にあり、ループに入ることはできません。
  • Whileループでは、条件が最初にテストされ、テスト結果がtrueの場合にコードブロックが実行されます。
0
Yasar Khan

おそらくwdlenは2以上の値で始まるので、2番目の場合、ループ条件は最初は偽であり、ループに入ることはありません。

2番目のケースでは、wdlen<2条件が最初にチェックされる前にループ本体が実行されるため、printf/scanfが少なくとも1回実行されます。

0
sth

while実行する前にconditionをテストするstatementswhileループ内。

do while実行後のconditionのテストstatementループ内。

ソース:C

0
Prime

while条件をテストしますbefore whileループでステートメントを実行します。

条件のテスト中に行うafterループ内でステートメントを実行した。

0
BOUKERI Besmen

ステップ1のwhile構成体とdo whileの違いは、while()句内の条件に関係なく、do {}内の式が少なくとも1回実行されることです。

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)

詳細な説明は次のとおりです。 説明 訪問: coderforevers

0
Ashish Yadav

WHILEで最初に条件をチェックしてからプログラムを実行するDO-WHILEループで最初にプログラムを少なくとも1回実行してから条件をチェックする

0
IV REDDY

Do while(exit check)とwhile(entry check)の違いは、doに入っている間はチェックしないが、最初にチェックする間にチェックインすることです。

例は次のとおりです。

プログラム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

プログラム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

出力プログラム1:

10

出力プログラム2:

[何も印刷されない]

note:

プログラム1とプログラム2の出力は、a = 0とb = 0を割り当て、a ++を入れると同じになります。およびb ++;プログラムのそれぞれの本体で。

0
Runni Kumari

ループ中:

while(test-condition)
{
      statements;
      increment/decrement;
}
  1. より低い実行時間と速度
  2. エントリ条件付きループ
  3. 一定の反復回数はありません

Do Whileループ:

do
{
      statements;
      increment/decrement;
}while(test-condition);
  1. より高い実行時間と速度
  2. 条件付きループを終了
  3. 最小1回の反復

このトピックの詳細については、WhileループとDo Whileループの違い

これは、Cプログラミング、Javaプログラミング、およびその他の言語でも有効です。概念は同じままであり、構文のみが変更されるためです。

また、注意すべき小さな違いですが、do whileループは、while条件の終わりにsemicolonで構成されていることです。

0
Tushar Soni