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

-1 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;
}
Run Code Online (Sandbox Code Playgroud)

Sin*_*all 5

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

while( nIntVal == 0 )
    {
        nIntVal += nTempVal;
        cout<<nIntVal;
    }
Run Code Online (Sandbox Code Playgroud)

它是0.

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

因此,无论nIntValnTempVal为0,你被困在这儿(0 + 0 = 0和循环永远不会结束).