-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ゼロにかなり近いものになります。

したがって、両方ともnIntVal0nTempValであり、ここで立ち往生します (0+0 = 0 で、ループは決して終了しません)。

于 2012-07-10T09:39:26.543 に答える
3

nTempVal = 0. したがって、ループは終了しません。

このようなエラーを簡単に見つけることができますdebugger

于 2012-07-10T09:39:06.130 に答える