2011-12-07 4 views
-1

C++のfor-loopで動的にインクリメントすることが可能かどうか疑問に思っていました。C++のfor-loopで動的にインクリメントすることはできますか?

for (int x = 0; x < maxX-1; x ++){ 
    for (int y = 0; y < maxY-1; y ++){ 
     for (int z = 0; z < maxZ-1; z++){ 
      cout << "z = " << z << endl; 
     } 
    } 
} 

z = 0 
z = 1 
z = 2 
... 

私はループを変更した場合ただし、プリントアウト:

amount = 2; 
for (int x = 0; x < maxX-1; x ++){ 
    for (int y = 0; y < maxY-1; y ++){ 
     for (int z = 0; z < maxZ-amount; z+= amount){ 
      cout << "z = " << z << endl; 
     } 
    } 
} 

その後、私は無限ループを取得する例えば、私は、次のコードを持っています

z = 0 
z = 0 
z = 0 
z = 0 

これを行うことはできませんか?

+4

無限ループですか、終了する前に一度反復するZループですか?これは、maxZが4以下の場合に発生する可能性があります。 – wrren

+0

maxZが間違った値に誤って設定されている場合がありました。私はこれが可能であることを確かに知ってうれしいよ:) –

+0

インクリメントは本当に 'z + amount'と書かれていませんか? - あるいは別の可能性:あなたの考えにもかかわらず、「金額」は0です。 – UncleBens

答えて

2

これは完全に可能です。あなたは整数オーバーフロー/アンダーフローのバグがある可能性が高いです。

+0

この場合、彼は0 2 4 ... -4 -2 0 2 4 ...を得るでしょう。 – AlexTheo

0

私は上記のコードが動作しない理由は何もありません.Luuideanはzループが反復している可能性があり、maxX、maxY、maxZの値にもよります。

0

これは完全に可能です。

送信したコードでは、無期限ループは作成されません。

#include <iostream> 

int main() { 
    int amount = 2; 

    int maxX = 4; 
    int maxY = 5; 
    int maxZ = 12; 

    for (int x = 0; x < maxX-1; x ++){ 
     for (int y = 0; y < maxY-1; y ++){ 
      for (int z = 0; z < maxZ-amount; z+= amount){ 
      cout << "z = " << z << endl; 
     } 
    } 
} 
} 

http://codepad.org/TZtTFdnD

0

あなたはできますが、コードは従うことが非常に困難になるにつれて、あなたはメンテナンスの頭痛を作成しています。

私はあなたの戦略を考え直すべきだと思います。

関連する問題