Пожалуйста, проверьте http://linux.die.net/man/1/gcc есть опция компилятора -mcheck-zero-division, чтобы справиться с этим.
В качестве альтернативы, установка обработчика SIGFPE может быть вариант, Поплавок DIV на 0 будет затем генерировать «FPE_ZERODIVIDE»
signal(SIGFPE, (fptr) FPE_ExceptionHandler);
void FPE_ExceptionHandler(int nSig,int nErrType,int */*pnReglist*/)
{
switch(nErrType)
{
case FPE_ZERODIVIDE: /* ??? */ break;
}
}
так
системы Большинство с плавающей точкой основаны на стандарте IEEE , что позволяет делить на 0. Это возвращает либо положительную бесконечность, либо отрицательную бесконечность, если это необходимо, основываясь на знаках чисел. (За исключением 0/0 возвращает неопределенный NAN - опять же не исключительный случай.) Это, как правило, полезно для научных и математических приложений. NAN эффективно сигнализируют случай, когда расчеты не были pseible, но позволяют продолжить вычисления. Продолжающиеся вычисления не приведут к новым результатам, но будут продолжать возвращать НН. Это позволяет проводить длинные длинные цепочки вычислений без проверки ошибок в пределах калькуляции. Ошибка проверки должна выполняться только в самом конце работы. Это делает код намного проще и быстрее. Он также может быть более полезным иногда, как и для некоторых приложений, infintity - это «полезный» результат, а не действительно признак проблем.
Обратите внимание, что опция -mcheck-zero-division специфична для архитектуры MIPS. Например. он не будет работать на x86. – janneb
Да, вы правы, нам нужно пойти для обработчика SIGFPE .. – lakshmanaraj