@__hack__ll

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Java for文についての質問

Q&A

Closed

初歩的な質問なんですが、for文の実行順について教えてほしいことがあります。

for(int i=0;i<10;i++){}

for文はこのような初期化式、繰り返し条件式、ループの更新式、その次にブロック文が続きますが。
ループの更新式が実行されるタイミングはブロック文の中にある命令などが実行されてからという認識で合っていますか?
()内のローカル変数iの値はfor文のブロックが実行されるたびにインクリメントによって増えていきますが、iの数値が増えるのはいつなのかということについて分からないです。

for(int i=0; i<5; i++){
int num = i;
System.out.println(num);
}

この文では0,1,2,3,4という風に表示されるので、iに1が加算されるのはブロック文が実行された後になると思っています。

0 likes

3Answer

「初期値設定式」でループ変数の初期値を設定します。「ループ条件式」が真(true)である限りループを実行します。ループを1回処理するごとに「ループ更新式」を実行します。

int i=0
i<10 //true
ブロックの中身
i++  //1回実行後 i=1
i<10 //true
ブロックの中身
i++  //2回実行後 i=2
...
// 10回実行後 i=10
...
i<10 //false
終了、ブロックの中身を実行しない。i++実行しない。

0Like

愕然です。

for(int i=0;i<10;i++){命令文}

  1. int i=0; 初期化式 for文のループ実行直前に1回だけ継続変数(i)を初期化します。

  2. i<10; 繰り返し条件式 命令文の前にforのループを継続するか継続変数(i)が10未満であるか判定する式です。

  3. 2の判定が真、trueなら命令文を実行します。

  4. i++ ループの更新式 forループを離脱させるために、命令文の実行直後に継続変数(i)を1upし、 2の繰り返し条件式の判定を実施します。

よって、for文のループ終了後のiの値はループの更新式の実行後の10となります。

0Like

ループの更新式が実行されるタイミングはブロック文の中にある命令などが実行されてからという認識で合っていますか?

合っています

閉じカッコ}の直前で更新されるイメージです

0Like

Comments

  1. @__hack__ll

    Questioner

    回答ありがとうございます。間違っていないとわかって安心しました。

Your answer might help someone💌