カテゴリを C++ としていながら C言語レベルの話でなんですが……。
さてここで問題です。
do 文で continue した時は while の条件はチェックされるでしょうか?
正直、正しく答えられなかった自分がいる。
ていうか、「あれ?」って思った自分がいた。
気になる人は今すぐ実行して確認せよ。
#include <stdio.h> static bool CheckEvaluation(bool& value) { fprintf(stdout, "評価された(値:%s)\n", (value?"true":"false")); return value; } static void CheckCounting() { fprintf(stdout, "for の一番右側が実行された\n"); } int main(int argc, char** argv) { bool continueLoop = true; while (CheckEvaluation(continueLoop)) { fprintf(stdout, "while 文では continue 時に条件がチェックされる\n"); continueLoop = false; continue; } continueLoop = true; do { fprintf(stdout, "do 文でも continue 時には条件がチェックされる\n"); continueLoop = false; continue; } while (CheckEvaluation(continueLoop)); for (continueLoop = true; CheckEvaluation(continueLoop);CheckCounting()) { fprintf(stdout, "となれば当然 for 文でも continue 時には条件がチェックされる\n"); continueLoop = false; continue; } return 0; }
あー、do でも continue 時に条件チェックされるんだな。
なんか continue の動作を漠然と「上のところに戻る」っていうイメージで理解していたので
間違えてた………。
C 系言語(C とか C++ とか Java とか C# とか)使い続けて何年になるっていうんだ……!?
自分のダメさに脱帽。