Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: elkiy en 3 Octubre 2012, 21:56 pm



Título: duda: funcionamiento operador unario de conversion de tipo
Publicado por: elkiy en 3 Octubre 2012, 21:56 pm
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
  1. double promedio;

Tambien tengo dos variables del tipo integer llamadas total y contadorCalif


Código
  1. int total;
  2. int contadorCalif;

bueno supongamos que total vale 8 y contadorCalif vale 4.

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

Código
  1. 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?



Título: Re: duda: funcionamiento operador unario de conversion de tipo
Publicado por: leosansan en 3 Octubre 2012, 22:26 pm
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:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6.    double promedio;
  7.    int total=8;
  8.    int contadorCalif=3;
  9.    promedio = static_cast <int> (total) / contadorCalif;
  10.    cout << promedio << endl;
  11. }
Veras que promedio vale 2, en lugar de 2.66667.


Título: Re: duda: funcionamiento operador unario de conversion de tipo
Publicado por: elkiy en 4 Octubre 2012, 18:37 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



Título: Re: duda: funcionamiento operador unario de conversion de tipo
Publicado por: elkiy en 4 Octubre 2012, 18:45 pm
PD: se agradece la ayuda, pense que nadie lo constestaria


Título: Re: duda: funcionamiento operador unario de conversion de tipo
Publicado por: leosansan en 4 Octubre 2012, 19:22 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:
Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. int main ()
  5. {
  6.    double promedio;
  7.    int total=8;
  8.    int contadorCalif=3;
  9.    promedio = static_cast <double> (total) / contadorCalif;
  10.    cout << promedio << endl;
  11. }
donde ya promedio toma el valor 2.6667.
Saludos 1996marioful


Título: Re: duda: funcionamiento operador unario de conversion de tipo
Publicado por: elkiy en 5 Octubre 2012, 17:48 pm
jeje  ;D gracias man