Problemas aritméticos

De Wikipedia, la enciclopedia libre

Un problema aritmético (dentro de la computación), se denomina al desbordamiento de datos debido a la sobre ocupación (overflow) de la memoria disponible como tipos de datos.

Supongamos el siguiente trozo de código de un programa en C:

#include <stdio.h>
int main()
{
  int x, y;
  x = 32000;
  y = 7;
  printf("%d",x*y);
}

Este sería un caso de desbordamiento de entero, ya que para el lenguaje C, se define el tipo de dato entero dentro del rango de -32764 a +32764, siendo el resultado de esta multiplicación, fuera del rango de los enteros.

También en el lenguaje Delphi de Borland podría darse el siguiente caso.

function Multiplicar(X, Y: Integer): Integer;
begin
  try
    Result := X * (999999999 * Y);
  except
    Result := 0;
  end;
end;

Al utilizar esta función, aunque no da ningún error de diseño, compilación o de ejecución si devuelve datos erróneos que pueden causar problemas graves dentro del procesamiento de los datos en dicha aplicación.

Por lo general, este tipo de errores producen cálculos erróneos y hacen que la vulnerabilidad del programa quede manifiesta.

Véase también[editar]