-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)
首先,是什么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非常接近于零.
因此,无论nIntVal和nTempVal为0,你被困在这儿(0 + 0 = 0和循环永远不会结束).