ERROR AL MULTIPLICAR BORLAND

Juan Alfonso
18 de Octubre del 2009
Hola a todos, el motivo de mi mensaje es que se produce un error de multiplicación en borland cuando hago la operación 854*1024, en lugar de dar como resultado 874496 da 22528. ¿Sabéis a qué se debe?¿Es problema del compilador? El IDE que utilizo es Borland C++ 5.02 . Un saludo y gracias de antemano.

Paco
18 de Octubre del 2009
El problema es que, probablemente, estés trabajando con variables del tipo short int (16 bits), cuyo rango va de -32768 a +32767. Dado que el resultado de la operación que quieres efectuar excede del rango posible, te conserva solamente los 16 bits (2 bytes) menos significativos, que corresponden a un short int con el resultado que te da.
Pueden ocurrir dos cosas:

1. Las variables que utilizas las has declarado como int. En este caso, lo que ocurre es que tu compilador es bastante antiguo y utiliza un int de 16 bits (2 bytes, compruébalo pidiéndole que te imprima sizeof(int)). La solución es declarar las variables como long int (enteros de 32 bits, 4 bytes).

2. Las variables están declaradas como short int. Entonces, decláralas como int (previa comprobación imprimiendo sizeof(int), aunque creo que, por la versión, ya utiliza int de 32 bits (4 bytes)). En el caso de que te diga que un int tiene 2 bytes, utiliza long int.

Como norma general, cuando un programa te haga cosas de este estilo, prueba a utilizar variables de rango superior.

Saludos,

Paco.