我一直在VS2015中调试C ++应用程序,发现我的多个double变量在被零除后以NaN结尾。尽管这是合理的,但我启用了浮点异常(/ fp:except),因此我希望这会引发异常。查看MS help page,它没有列出导致浮点异常的原因。根据{{3}},除以零是一个浮点异常。情况并非如此,即以下启用/ fp:except的测试程序
int main()
{
try
{
double x = 1;
double y = 0;
double z = x / y;
printf("%f\n", z);
return 0;
}
catch (...)
{
printf("Exception!\n");
return 0;
}
}
显示“ inf”。应该引发浮点异常吗?
编辑:检查调试器中是否启用了异常并获得相同的结果,无论 this answer to a related question
Edit2 :对IEE 754的进一步阅读向我表明,启用浮点异常后,我应该会得到一个异常。但是,对先前链接的问题的评论指出'名称“浮点异常”是历史上的误称。浮点除以零是明确定义的(根据Annex F / IEEE754),不会产生任何信号。'