私はmax_position
の値を更新するつもりですループ内で、これは私のforループに影響を与える、forループの開始条件を変更できますか?
for (int i=max_position; i<N; ++i) { ... }
しかし、私のコードでこれを持っていますか?
私はmax_position
の値を更新するつもりですループ内で、これは私のforループに影響を与える、forループの開始条件を変更できますか?
for (int i=max_position; i<N; ++i) { ... }
しかし、私のコードでこれを持っていますか?
n4296から:
いいえ、それはありません。 for
ループ内の最初のステートメントは1回だけ実行されます。
i
を設定すると、i
を設定するために使用された変数の値を変更しても、i
には影響しません。
i
の値をfor
ループボディ内で明示的に変更することはできますが、
がサイクル実行前に一度初期化されてからmax_position
で初期化されるため、サイクルに何らかの影響を与えることはありません。max_position
はサイクルに影響しません。
あなたは私に= maxの位置およびループの
ない変数i変数ではないMAX_POSITIONを使用して、int i = max_position
はちょうど一度に実行されます初期化を言っているので、何もそれをしませんありません。 あなたはそれがを逆転を試し、ループに影響を与えるにしたい場合:この後方ループで
for (int i = N - 1; i >= max_position; --i) {
...
}
i >= max_position
条件は、各反復でチェックされます。 C++とCのすべてのバージョンは、同等の文言があったものの、ドラフトC++ 14標準(ある
for(i = max_position;i<N;i++){
if(smthHappened)
i+=3;
}
変更私の代わりに、開始条件、MAX_POSITIONを変更するとは限らない効果)。
文の
はfor (for-init-statement condition(opt); expression(opt)) statement
{ for-init-statement while (condition) { statement expression ; } }
と同等であるため、INIT文で宣言された名前がで宣言されたものと同じ 宣言型領域にあることを除いて、 条件を除き、のの文(別の反復文で囲まれていない)は、の条件を再評価する前に、の式を実行する前に実行されます。 [注:したがって、最初のステートメントはループの の初期化を指定します。条件(6.4)は、各反復の前に行われたテストを指定して、 の条件が偽になるときにループが終了するようにします。表現はしばしば、各繰り返しの後に行われる増分を指定する。 - あなたが見ることができるように、エンドノート]
、あなたはそれを初期化するために使用される式で使用される変数を変更し、i
を初期化した後は、効果がありません。
いいえ、 'i = max_position'はただ一度だけ実行されます* –
あなたは本当にやりたいことは修正することです"i"はループ内にあり、それは非常に可能です。 –