Expressions and statements
ES.105
Не делите целое на ноль
Причина
Результат не определён и, вероятно, приведёт к аварийному завершению программы.
Примечание
Это также относится к %.
Пример (плохой)
int divide(int a, int b)
{
// ПЛОХО, следует проверять (например, в предусловии)
return a / b;
}
Пример (хороший)
int divide(int a, int b)
{
// хорошо, обрабатывается через предусловие (заменить контрактами, когда они появятся в C++)
Expects(b != 0);
return a / b;
}
double divide(double a, double b)
{
// хорошо, обрабатывается через использование double
return a / b;
}
Альтернатива: Для критически важных приложений, допускающих некоторые накладные расходы, используйте целочисленные и/или вещественные типы с проверкой диапазона.
Контроль
- Отмечать деление на целочисленное значение, которое может быть равно нулю