duda: funcionamiento operador unario de conversion de tipo

Iniciado por elkiy, 3 Octubre 2012, 21:56 PM

0 Miembros y 1 Visitante están viendo este tema.

elkiy

bueno es un programa de c++ en el libro donde estoy estudiando me muestra el operador unario de conversion de tipo y no termino de entender que es realmente lo que hace, o simplemente estoy en duda su funcionamiento.

paso a contarles:

en el programa tengo una variable llamada promedio que es de tipo double, que el valor de esta variable lo genera el usuario. (supongamos que le doy el valor de 10.6578)

Código (cpp) [Seleccionar]
double promedio;

Tambien tengo dos variables del tipo integer llamadas total y contadorCalif


Código (cpp) [Seleccionar]
int total;
int contadorCalif;


bueno supongamos que total vale 8 y contadorCalif vale 4.

Ahora viene el funcionamiento del operador unario de conversión.

Código (cpp) [Seleccionar]
promedio = static_cast <double> (total) / contadorCalif;

ok, yo por lo que entendi este operador lo que hace es pasar los numeros fracionarios de promedio a total, comvirtiendolo  a total en 8,6578 dividiendolo por contadorCalif (que vale 4)

¿es así su funcionamiento? sino es así ¿cual es su funcionamiento?


leosansan

Citar¿es así su funcionamiento? sino es así ¿cual es su funcionamiento?
Creo que no es así, si ejecutas el programa verás que total sigue valiendo 8. Otra cosa es que hagas:
#include <iostream>
using namespace std;

int main ()
{
    double promedio;
    int total=8;
    int contadorCalif=3;
    promedio = static_cast <int> (total) / contadorCalif;
    cout << promedio << endl;
}

Veras que promedio vale 2, en lugar de 2.66667.

elkiy

#2
Cita de: leosansan en  3 Octubre 2012, 22:26 PM


hola fijate que en tu codigo hay un error:

pasas un tipo integer:

   promedio = static_cast <int> (total) / contadorCalif;

el que yo pase era un double

   promedio = static_cast <double> (total) / contadorCalif;

Igual creo que ya entendi el funcionamiento creo que lo que hace es convertir a total en un tipo double temporalmente para hacer esa cuenta


elkiy

PD: se agradece la ayuda, pense que nadie lo constestaria

leosansan

Cita de: 1996marioful en  4 Octubre 2012, 18:37 PM
Igual creo que ya entendi el funcionamiento creo que lo que hace es convertir a total en un tipo double temporalmente para hacer esa cuenta
Exacto, lo puedes comprobar con:
#include <iostream>
using namespace std;

int main ()
{
   double promedio;
   int total=8;
   int contadorCalif=3;
   promedio = static_cast <double> (total) / contadorCalif;
   cout << promedio << endl;
}

donde ya promedio toma el valor 2.6667.
Saludos 1996marioful

elkiy