13

;ループの最後に配置するか、ループの最後whileに配置しないことに常に問題がありdo whileます。では、その理由は何ですか?どうして

int numItemsToProcess = 3;  
while(numItemsToProcess > 0)  
{  
    // process an item  
    numItemsToProcess--;  
} 

;最後は必要ありませんが、

do  
{  
    numItemsToProcess --;
} while (numItemsToProcess > 0);  

しますか?理由はあまり重要ではないかもしれません。しかし、理由がわかれば、どこに置くべきか思い出すことができます;

4

4 に答える 4

15

block ステートメントを除くすべてのステートメントの後にセミコロンを置きます。これが、のブロックの後ではなく、 の後whileに配置する理由です。do whilewhile {...}

また、ほとんどすべての宣言を終了するためにも使用します。現時点で考えられる唯一の例外は、関数本体とnamespaceC++ の本体です。

于 2013-02-20T06:01:30.413 に答える
12

これらは 2 つの異なるループ構造です。覚えておく必要があります。

それらをワンライナーと考え​​てください:

do one_thing while( condition );

do { stuff } while( condition );

while( condition ) one_thing;

while( condition ) { stuff }

これらはすべて、最後にセミコロンが必要な式ですが、最後のものを除き、中かっこは論理的に式の終わりを示します (ifステートメントを考えてください)。

于 2013-02-20T06:02:29.667 に答える
0

それは標準だからです。ISO C ++標準の ページ番号128 も
参照してください。 これは、whileステートメントがdo-whileループ内で有効であるためです。

int x = 10;
int y = 10;

do 
 while(x > 0)
  x--;
 while(x = y--);

ステートメントを終了しているからです。
ステートメントは、ブロック(中括弧で区切られている)
またはセミコロンで終了します。「これを実行する」は単一のステートメントであり、ブロックで終了することはできません(「while」で終了するため)。
したがって、他のステートメントと同様にセミコロンが必要です。

于 2013-02-20T06:07:59.833 に答える
0

この理由は次のとおりです。

  1. while 条件:- while 条件には次のような署名があります

    while (expression) 
       statement
    

while ループは、指定された式に従って実行されます。式が true の場合、while {} で記述されたステートメントは実行されます。それ以外の場合は実行されません。;後にマークを付けることもできますが、ステートメントの終わりを示すように、構文をただちにwhile (expression);完了するだけです。一般に、e ループは式をチェックし、内部のステートメントのリストを実行します。while;whil

  1. Do While 条件:- Do while のような署名があります

    do
        statement
    while (expression);
    

do-while面白いループです。inが true であるか falseであるかにdo関係なく、以下のステートメントが少なくとも 1つのステートメントを実行するという特殊性があります。のフローは、次のステートメントが 1 回実行されてから条件がチェックされることを示しています。条件が真の場合、次のステートメントが再度実行されます。の最後にあるのは、ここは本体が上にあるため、ステートメントとして扱われるためです。C++ では、すべてのステートメントは;で終わる必要があります。で終わります。expressionwhiledo whiledowhilewhiledo;do ... while (expression);whiledo while;

于 2013-02-20T06:16:00.940 に答える