2016-12-02 12 views
2

私はmax_positionの値を更新するつもりですループ内で、これは私のforループに影響を与える、forループの開始条件を変更できますか?

for (int i=max_position; i<N; ++i) { ... }

しかし、私のコードでこれを持っていますか?

+0

いいえ、 'i = max_position'はただ一度だけ実行されます* –

+0

あなたは本当にやりたいことは修正することです"i"はループ内にあり、それは非常に可能です。 –

答えて

0

いいえ、それはありません。 forループ内の最初のステートメントは1回だけ実行されます。

iを設定すると、iを設定するために使用された変数の値を変更しても、iには影響しません。

iの値をforループボディ内で明示的に変更することはできますが、

0

がサイクル実行前に一度初期化されてからmax_positionで初期化されるため、サイクルに何らかの影響を与えることはありません。max_positionはサイクルに影響しません。

1

あなたは私に= maxの位置およびループの

2

ない変数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; 
} 
0

変更私の代わりに、開始条件、MAX_POSITIONを変更するとは限らない効果)。

文の

for (for-init-statement condition(opt); expression(opt)) statement 

{ 
    for-init-statement 
    while (condition) { 
     statement 
     expression ; 
    } 
} 

と同等であるため、INIT文で宣言された名前がで宣言されたものと同じ 宣言型領域にあることを除いて、 条件を除き、のの文(別の反復文で囲まれていない)は、の条件を再評価する前に、の式を実行する前に実行されます。 [注:したがって、最初のステートメントはループの の初期化を指定します。条件(6.4)は、各反復の前に行われたテストを指定して、 の条件が偽になるときにループが終了するようにします。表現はしばしば、各繰り返しの後に行われる増分を指定する。 - あなたが見ることができるように、エンドノート]

、あなたはそれを初期化するために使用される式で使用される変数を変更し、iを初期化した後は、効果がありません。

関連する問題