Las conversiones de tipo permiten convertir un int en un double, por ejemplo. La forma de convertir un valor en otro tipo consiste en poner entre paréntesis la expresión a convertir, y luego poner el tipo al que la queremos convertir delante. Por ejemplo, si tenemos las variables:
int a = 3; double x;
podemos asignar el valor de a en x convirtiéndolo primero:
x = double(a);
La expresión double(a) convierte el valor de a, un int en un double. Ese tipo de conversión no requiere ningún tratamiento especial. Los enteros ya son números reales, en realidad.
La conversión inversa, sin embargo, implica quitar los decimales. Si tenemos
int a; double x = 4.5; a = int(x);
la conversión int(x) tiene que descartar el 0.5 sobrante de x para acomodarlo en a.
Si en un programa como el siguiente
int a, b; a = 3; b = 11; cout << a / b << endl;
quisiera obtener la división real, puedo cambiar el tipo de a y b pero si eso no es posible y aún quiero la división real, puedo hacer una conversión antes. Sin pensar demasiado, se puede caer en la trampa de creer que la instrucción
cout << double(a / b) << endl; // esto no funciona...
arregla las cosas, pero si lo pensamos detenidamente, se ve que para convertir el valor se debe evaluar primero la expresión a / b, y por tanto la división entera se aplica igualmente, solo que luego el resultado se convierte a real. Para que la división que se aplique sea la real, se debe hacer la conversión de a y b antes de hacer la división:
cout << double(a) / double(b) << endl; // esto sí funciona
El caso inverso también es interesante, si dispongo de dos variables reales y quiero hacer la división entera puedo convertir justo en el momento de dividir los valores a enteros:
double a, b; a = 3.1; b = 11.2; cout << int(a) / int(b) << endl;
Suponiendo las siguientes declaraciones
int a = 2, b = 3; double x = 0.4, y = 1.2;
Evalúa manualmente cada una de las siguientes expresiones:
a + int(y*y) double(1 + int(2.5) * a) + .3 int(3.9) + 3 * int(x) + int(double(a) + 1.5) int(double(a) / x) double(a / int(y) + 1) double(int(x) / double(a + 1))
Comprueba luego si estabas en lo cierto haciendo un programa de prueba.
En preparación