是否可以在C ++中的for循环中动态增加?

时间:2011-12-07 12:07:55

标签: c++ dynamic for-loop

我想知道是否可以在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 个答案:

答案 0 :(得分:2)

这是完全可能的。更有可能的是你有一个整数溢出/下溢错误。

答案 1 :(得分:0)

我没有看到上述代码无效的原因。正如Rhuidean所说,z循环可能是迭代的,也取决于maxX,maxY和maxZ的值。

答案 2 :(得分: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

答案 3 :(得分:0)

你可以,但由于代码很难遵循,你正在创建一个维护问题。

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