LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

devide_by_zero

1. divide
2. Где здесь деление на 0?

return 42/i;


Хардкод, фу!

  } else {
    exit(-1);

Это не деление на ноль!

Предлагаю такой вариант

#include <limits.h>
#define INFINITY INT_MAX
 
int divide(int numerator, int denominator) {
    int sign, result;
 
    if (denominator) {
    	result = numerator / denominator;
    } else {
        sign = (numerator > 0) - (numerator < 0);
        result = sign * INFINITY;
    }
 
    return result;
}

Исходная версия KennyMinigun, :

devide_by_zero

1. divide
2. Где здесь деление на 0?

[code=c]return 42/i;[/code]

Хардкод, фу!

  } else {
    exit(-1);

Это не деление на ноль!

Предлагаю такой вариант

#include <limits.h>
#define INFINITY INT_MAX
 
int divide(int numerator, int denominator) {
    int sign, result;
 
    if (denominator) {
    	result = numerator / denominator;
    } else {
        sign = (numerator > 0) - (numerator < 0);
        result = sign * INFINITY;
    }
 
    return result;
}