2011-12-07 49 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

可以,但你正在创建一个维护头痛为代码变得非常难走。

我想你应该重新考虑你的策略。