for文中のcontinueにおける処理に関して教えてください。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

トピックに返信する


答えを正確にご入力ください。答えられるかどうかでスパムボットか否かを判定します。

BBCode: ON
[img]: ON
[flash]: OFF
[url]: ON
スマイリー: OFF

トピックのレビュー
   

展開ビュー トピックのレビュー: for文中のcontinueにおける処理に関して教えてください。

Re: for文中のcontinueにおける処理に関して教えてください。

#5

by TT930 » 8年前

なるほど、やっぱりそうでしたか。

理解できました。ありがとうございました。

また機会があればよろしくお願いします。

Re: for文中のcontinueにおける処理に関して教えてください。

#4

by usao » 8年前



整数の計算における「余り」ですから,

1÷2 → 商0,余り1
1÷7 → 商0,余り1

ではないでしょうか.

Re: for文中のcontinueにおける処理に関して教えてください。

#3

by TT930 » 8年前

for( ; ; )にそんな効果があるとは知りませんでした。これでだいたい理解することが出来ました。

もう一つ聞きたいのですが。i = 1の時はどの様な計算で、2つのif文が否定されて、printf("i = %d まぁだだよ¥n" , i);の実行につながるのでしょうか

1÷2はdouble型を利用していないので答えが0.5とはならず、計算できないから余りは, 無し != 0 という事なのでしょうか?

Re: for文中のcontinueにおける処理に関して教えてください。

#2

by usao » 8年前

コード:

for( 処理A; 条件B; 処理C )
{
  処理D
}
と書いた時の動きは

(1)処理A
(2)条件Bを判断.条件を満たさないなら終了
(3)処理D
(4)処理C
(5) 手順(2)へ

という形.
(3)の処理D内でのcontinueの効果は「(4)へ」.

for文中のcontinueにおける処理に関して教えてください。

#1

by TT930 » 8年前

コード:

#include	<stdio.h>

void main(void)
{
	int	i;

	for(i = 0; ; i++)
	{
		if(i % 2 == 0)	// i を 2 で割った余りが 0 なら
		{
			printf("i = %d もーいいかい?¥n", i);
			continue;	// for 文の中で、この後の処理を飛ばす
		}

		if(i % 7 == 0)	// i を 7 で割った余りが 0 なら
		{
			printf("i = %d もーいいよ!!¥n", i);
			break;	// for 文から抜ける
		}

		printf("i = %d まぁだだよ!¥n", i);
	}
}
実行結果
i = 0 もーいいかい?
i = 1 まぁだだよ!
i = 2 もーいいかい?
i = 3 まぁだだよ!
i = 4 もーいいかい?
i = 5 まぁだだよ!
i = 6 もーいいかい?
i = 7 もーいいよ!!

このプログラムは、

なぜ、i = 6のあと i = 7 もーいいよ!!の処理が行われるのでしょうか?

また、for文中のcontinueの効果がどうなっているのか解説してください。なぜ、printf("i = %d まぁだだよ!¥n", i);は実行されるのでしょうか?

また、i++は、if(i % 2 == 0)、if(i % 7 == 0)、printf("i = %d まぁだだよ!¥n", i);の終わり毎に働くものなのでしょうか?

ページトップ