Я отлаживал приложение 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».Должно ли это вызывать исключение с плавающей запятой?
Редактировать: Проверено, что исключения были включены в отладчике и получить тот же результат независимо от
Edit2: Дальнейшее чтение здесь в IEE 754 подсказывает мне, что с включенными исключениями с плавающей запятой я должен получить исключение.Однако комментарий к ранее связанному вопросу гласит: 'Название «исключение с плавающей запятой» является историческим неправильным.Деление числа с плавающей точкой на ноль четко определено (согласно Приложению F / IEEE754) и не дает никакого сигнала. '