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

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

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

#1

投稿記事 by esu » 16年前

お世話になります。
下記の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;

}

Dixq (管理人)

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

#2

投稿記事 by Dixq (管理人) » 16年前

i++;
はループが一周終わった時に実行されます。
また i <= cnt; の条件にあわなくなったということは、
iはいくらになったということですか?
それを考えたら自ずとわかると思います。

esu

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

#3

投稿記事 by esu » 16年前

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

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

box

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

#4

投稿記事 by box » 16年前

当該のコードにおいて、for 文のループを脱出するのは、
i が 5 になったときです。
つまり、for 文のループを脱出した時点における
i の値は 5 です。
したがって、当該の if 文の結果は真となります。

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

esu

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

#5

投稿記事 by esu » 16年前

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

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


閉鎖

“C言語何でも質問掲示板” へ戻る