次の質問が与えられた場合、ゼロ防止による除算とそれが NaN であるかどうかを確認する例として、次のコードを作成しました。
#include <cstdlib>
#include <iostream>
#include <map>
#include <windows.h>
using namespace std;
bool IsNonNan( float fVal )
{
return( fVal == fVal );
}
int main(int argc, char *argv[])
{
int nQuota = 0;
float fZero = 3 / (float)nQuota;
cout << fZero << endl;
cout << IsNonNan( fZero ) << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
なぜ return がIsNonNan
true なのですか? また、なぜint nZero = 3 / (float)nQuota;
出力するのでしょうか: -2147483648
?