2011-12-07 51 views
-1

我想知道是否有可能在C++中的for循環中動態增加。例如,我有以下代碼:是否可以在C++中的for循環中動態增加?

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

我看不出有任何理由爲什麼上面的代碼並不work.As Rhuidean說可以爲z循環迭代並且還取決於maxX的,美星和maxZ的值。

0

這是完全可能的。

您提交不創建ininite循環中的代碼。

#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

可以,但你正在創建一個維護頭痛爲代碼變得非常難走。

我想你應該重新考慮你的策略。