Четвертый BORLAND С++ и его окружение

       

Отмена обработки особых ситуаций для операций с плавающей точкой


По умолчанию программа Borland C++ в случае переполнения или

деления на ноль в операциях с плавающей точкой аварийно прерывается. Вы можете замаскировать эти особые ситуации для операций с

плавающей точкой, вызывая в main _control87 перед любой операцией

с плавающей точкой. Например:

#include <floar.h>

main() {

_control87(MCW_EM,MCW_EM);

...

}

Можно определить особую ситуацию для операции с плавающей

точкой, вызвав функции _status87 или _clear87.

Определенные математические ошибки могут также произойти в

библиотечных функциях, например, при попытке извлечения квадратного корня из отрицательного числа. По умолчанию в таких случаях

выполняется вывод на экран сообщений об ошибке и возврат значения

NAN (код IEEE "not-a-number" - "не число"). Использование NAN

(нечисловых значений) скорее всего приведет далее к возникновению

особой ситуации с плавающей точкой, которая в свою очередь вызовет, если она не замаскирована, аварийное прерывание программы.

Если вы не желаете, чтобы сообщение выводилось на экран, вставьте

в программу соответствующую версию matherr.

#include <math.h>

int cdecl matherr(struct exception *e)

{

return 1; /* ошибка обработана */

}

Любое другое использование matherr для внутренней обработки

математических ошибок недопустимо, так как она считается устаревшей и может не поддерживаться последующими версиями Borland C++.



Содержание раздела