当我使用while循环执行操作时,意外的无限循环遍历

时间:2012-07-10 09:36:04

标签: c++

看下面的程序。编译时,循环不会终止。这不是预期的行为。有人请解释一下这个原因吗?

#include<iostream.h>

int main()
{
    int nIntValue = 0;
    int nTempVal = 100;
    for( int nLoop = 1; nLoop <= 25; nLoop++ )
    {
        nTempVal = nTempVal / nLoop;
    }
    // Print the value of nIntVal
    while( nIntVal == 0 )
    {
        nIntVal += nTempVal;
        cout<<nIntVal;
    }
    return 0;
}

2 个答案:

答案 0 :(得分:5)

首先,nIntVal是什么? 其次,当你输入以下循环时,假设它真的是nIntValue

while( nIntVal == 0 )
    {
        nIntVal += nTempVal;
        cout<<nIntVal;
    }

是0。

对于nTempVal,您将100除以(1*2*3*...*25)。您正在使用int类型,这意味着所有值都已舍入。但即使你没有,第一个循环的确切结果将是0.000000000000000000000006447,这非常接近于零。

所以nIntValnTempVal都是0,你被困在这里(0 + 0 = 0,循环永远不会结束)。

答案 1 :(得分:3)

nTempVal = 0。所以循环没有终止。

您可以使用debugger

轻松找到此类错误