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;