应该除以零引发异常

时间:2018-10-02 16:49:31

标签: exception visual-c++ floating-point

我一直在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的进一步阅读enter image description here向我表明,启用浮点异常后,我应该会得到一个异常。但是,对先前链接的问题的评论指出'名称“浮点异常”是历史上的误称。浮点除以零是明确定义的(根据Annex F / IEEE754),不会产生任何信号。'

0 个答案:

没有答案