По умолчанию в UNIX деление с плавающей точкой на ноль не останавливает программу за исключением. Вместо этого он выдает результат, равный infinity
или NaN
. Вы можете проверить, что ничего из этого не произошло, используя isfinite
.
x = y / z; // assuming y or z is floating-point
if ( ! isfinite( x ) ) cerr << "invalid result from division" << endl;
Кроме того, вы можете проверить, что делитель не равен нулю:
if ( z == 0 || ! isfinite( z ) ) cerr << "invalid divisor to division" << endl;
x = y / z;