следует делить на ноль, поднять исключение - PullRequest
0 голосов
/ 02 октября 2018

Я отлаживал приложение C ++ в VS2015 и обнаружил, что ряд моих двойных переменных заканчивался NaN после деления на ноль.Хотя это разумно, у меня включены исключения с плавающей запятой (/ fp: исключением), поэтому я ожидал, что это вызовет исключение.Глядя на страницу справки MS , в ней не указано, что вызывает исключение с плавающей запятой.Согласно этому ответу на связанный вопрос деление на ноль является исключением с плавающей запятой.Это не так, то есть следующая тестовая программа с / fp: кроме включенного

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».Должно ли это вызывать исключение с плавающей запятой?

Редактировать: Проверено, что исключения были включены в отладчике и получить тот же результат независимо от enter image description here

Edit2: Дальнейшее чтение здесь в IEE 754 подсказывает мне, что с включенными исключениями с плавающей запятой я должен получить исключение.Однако комментарий к ранее связанному вопросу гласит: 'Название «исключение с плавающей запятой» является историческим неправильным.Деление числа с плавающей точкой на ноль четко определено (согласно Приложению F / IEEE754) и не дает никакого сигнала. '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...