ページ 11

for文においての数の増え方

Posted: 2008年12月04日(木) 21:26
by esu
お世話になります。
下記のfor文の継続条件式ならiは0から4まで増える事になりますよね?
ですがその下のif文による比較、if(i == cnt)は実行されます。
cntには5が代入されて、iにはfor文で増加した4が入りif(i == cnt)は
実行されないと考えているのですが、間違っているのでしょうか?
ちなみに継続条件式を i <= cnt; にすると0から5まで表示されて
if文は実行されません。これはなぜなんでしょうか?
#include <stdio.h>

int main(void){

int i;
int cnt = 5;

for (i = 0; i < cnt; i++){
	
printf("%d\n",i);
	
}

if(i == cnt){
printf("aaa");}

return 0;

}

Re:for文においての数の増え方

Posted: 2008年12月04日(木) 21:31
by Dixq (管理人)
i++;
はループが一周終わった時に実行されます。
また i <= cnt; の条件にあわなくなったということは、
iはいくらになったということですか?
それを考えたら自ずとわかると思います。

Re:for文においての数の増え方

Posted: 2008年12月04日(木) 21:38
by esu
お答え頂きありがとうございます。
i < cnt;は5、i <= は6になったということですね。
i < cnt;の場合、最後の4がprintfで出力されfor文が終わった後に1がプラスされる
という考えで間違っていませんか?

質問とは関係ありませんが、
でプログラムソース全体を囲えば字下げ
されるはずですよね?

Re:for文においての数の増え方

Posted: 2008年12月04日(木) 21:53
by box
当該のコードにおいて、for 文のループを脱出するのは、
i が 5 になったときです。
つまり、for 文のループを脱出した時点における
i の値は 5 です。
したがって、当該の if 文の結果は真となります。

もともとのソースが字下げしてあれば、
<pre>と</pre>で挟むと
投稿時も字下げしてくれます。

Re:for文においての数の増え方

Posted: 2008年12月04日(木) 22:21
by esu
理解できました。ありがとうございます。

字下げされなかったのは元々のソースが字下げされてないためのようでした。

Re:for文においての数の増え方

Posted: 2008年12月04日(木) 22:22
by esu
解決しました。