C言語クイズ

カテゴリを 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# とか)使い続けて何年になるっていうんだ……!?
自分のダメさに脱帽。