看下面的程序。编译时,循环不会终止。这不是预期的行为。有人请解释一下这个原因吗?
#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;
}
答案 0 :(得分:5)
首先,nIntVal
是什么?
其次,当你输入以下循环时,假设它真的是nIntValue
:
while( nIntVal == 0 )
{
nIntVal += nTempVal;
cout<<nIntVal;
}
是0。
对于nTempVal,您将100除以(1*2*3*...*25)
。您正在使用int
类型,这意味着所有值都已舍入。但即使你没有,第一个循环的确切结果将是0.000000000000000000000006447
,这非常接近于零。
所以nIntVal
和nTempVal
都是0,你被困在这里(0 + 0 = 0,循环永远不会结束)。
答案 1 :(得分:3)
nTempVal = 0
。所以循环没有终止。
您可以使用debugger