-1

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

#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;
}
4

2 回答 2

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 并且循环永远不会结束)。

于 2012-07-10T09:39:26.543 回答
3

nTempVal = 0. 所以循环不会终止。

你可以很容易地找到这样的错误debugger

于 2012-07-10T09:39:06.130 回答