因为循环永远

时间:2011-12-16 20:56:17

标签: c++ for-loop

我希望这个循环从我设置的值减少到10到0.为什么它会一直持续下去?

int lengthString = 10;

for (int j = lengthString; lengthString > 0; j--)
{
    cout << j;
}

7 个答案:

答案 0 :(得分:9)

更改为

 for (int j = lengthString; j > 0; j--)

lengthString在你的循环中不会改变。

另外,如果您将lengthString声明为j,则可能需要验证int是否大于0(在您的真实代码中),因为j是{{1}} 初始化为负数,循环将“永久”运行(直到它溢出并再次降低到0,即)。

答案 1 :(得分:2)

你的退出条件是lengthString > 0,因为你的循环中的lengthString没有改变,你只是说while(10 > 0),这是永远的。

我相信你的意思是:

for (int j = lengthString; j > 0; j--)

答案 2 :(得分:2)

for(int j = lengthString; j&gt; = 0; j - )

答案 3 :(得分:1)

你的循环递减j,并检查lengthString是否为&gt; 0

int lengthString = 10;

for (int j = lengthString; j > 0; j--)
{
    cout << j;
}

答案 4 :(得分:0)

您只是递减j,但循环条件不使用j

答案 5 :(得分:0)

你应该检查你的大于而不是长度串。

for (int j = lengthString; j > 0; j--) 

答案 6 :(得分:0)

试试这个:

for (int lengthString = 10, *j = &lengthString; lengthString > 0; lengthString--)
{
    cout << *j;
}