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


Hemos visto que cuando realizamos una operación con un conjunto de datos enteros el resultado es otro entero.

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;

Retornar