miércoles, 20 de abril de 2022

54 - Operador de molde con tipos enteros y reales (Cast)

 Cast (moldear)

Hemos visto que cuando realizamos una operación con un conjunto de datos enteros el resultado es otro entero. Este cast se realiza a través de un operador de conversión de tipos (type casting operator) y es un recurso a tener en cuenta ya que hay situaciones en que nos puede resultar de gran utilidad.




Hacer uso de un cast es tan sencillo como poner (tipo de dato)  delante de la expresión o variable a convertir.

En algunas situaciones necesitamos que el resultado sea de otro tipo en estos casos utilizamos el concepto de cast (moldear) Ej:

    float f=7/2;
printf("%f",f); //3

Luego podemos ver si imprimimos la variable f su contenido es un 3.

Esto ocurre porque la división de un int con respecto a otro valor int da como resultado un entero.

Si queremos que el resultado sea exacto podemos anteceder entre paréntesis al tipo de dato que queramos que se moldee:

    float f=(float)7/2;
printf("%f",f); //3.5

Problema 1:

Cargar las 3 notas de un alumno como valores enteros. Luego mostrar el promedio teniendo en cuenta si tiene parte decimal.

Programa: programa186.c

Ver video

#include<stdio.h>
#include<conio.h>

int main()
{
int nota1,nota2,nota3;
float promedio;
printf("Ingrese primer nota:");
scanf("%i",&nota1);
printf("Ingrese segunda nota:");
scanf("%i",&nota2);
printf("Ingrese tercer nota:");
scanf("%i",&nota3);
promedio=(float)(nota1+nota2+nota3)/3;
printf("La nota promedio es:%0.2f",promedio);
getch();
return 0;
}

Es importante notar que para obtener un valor float debemos dividir la suma de los tres valores indicando previamente con el operador cast la transformación a tipo float:

    promedio=(float)(nota1+nota2+nota3)/3;

Si no antecedemos (float) al resultado de la suma de los tres valores luego el resultado será un entero sin parte decimal.

Se produce una conversión automática sin necesidad de indicar el operador cast cuando tenemos un valor float y se lo asignamos a una variable entera:

    float f=5.3;
int x=f;
printf("%i",x); //5

No es necesario indicar (más allá que no genera error): 

    int x=(int)f;

Y así hay muchas situaciones en que podemos utilizarlo, como cuando lleguemos a C avanzado donde haremos incluso cast a punteros para lograr cosas que normalmente no podemos hacer. Espero que esta explicación les sea de utilidad.

No hay comentarios:

Publicar un comentario