2.12 Desbordamientos
y redondeos
Desbordamientos
(overflows)
En
lenguaje C
no
se detectan desbordamientos. Si el resultado de una expresión
está fuera del rango, el valor resultante es erróneo, pero no se
interrumpe el programa ni se señaliza de ninguna forma.
Ejemplo:
/* supongamos enteros de 16 bits */
/* su rango va de –32768 a +32767 */
int x, y;
main()
{
x = 30000;
y = x + 3000; /* ¡¡ y valdrá –29769 !! */
}
Redondeos
Si
una expresión entera da un resultado fraccionario, se redondea al entero
más cercano a cero (redondeo inferior).
Esto
ocurre aunque el destino de la expresión sea una variable en coma
flotante.
Ejemplo:
x = 13 / 3; // x valdrá 4
Números
en coma flotante
Los
números en coma flotante son necesarios para trabajar con fracciones o
con números de un rango mayor que los enteros.
float x = 123.456;
float y = 10000000.0;