do while文でcontinueを使用する誤解
1111 ワード
continueはdo whileの条件判断をスキップしません
まずコードを貼ります.
以前はcontinueがdoの開始位置にジャンプすると思っていたので、上記のプログラムはデッドサイクルになると思っていました.実はそうではなく、continueは「}」にジャンプし、do whileの条件判断をスキップすることはありません.
次に、cppreferenceからのcontinueの定義の例を示します.
continueはラベルcontinにジャンプすることに相当するので、while()の文は正常に実行されます.
リファレンス
continueの定義:http://en.cppreference.com/w/cpp/language/continue
まずコードを貼ります.
int i = 0;
do
{
printf("%d
", i);
if(i < 10)
continue;
}while(++i < 10);
以前はcontinueがdoの開始位置にジャンプすると思っていたので、上記のプログラムはデッドサイクルになると思っていました.実はそうではなく、continueは「}」にジャンプし、do whileの条件判断をスキップすることはありません.
次に、cppreferenceからのcontinueの定義の例を示します.
do {
// ...
continue; // acts as goto contin;
// ...
contin:;
} while (/* ... */);
continueはラベルcontinにジャンプすることに相当するので、while()の文は正常に実行されます.
リファレンス
continueの定義:http://en.cppreference.com/w/cpp/language/continue