C Conversión forzada de tipos

La conversión forzada de tipos consiste en convertir una variable de un tipo a otro tipo de dato. Por ejemplo, si desea almacenar un valor de tipo long en un entero simple, necesita convertir forzosamente el tipo long a int. Puede utilizarel operador de conversión forzada de tipospara convertir explícitamente un valor de un tipo a otro, como se muestra a continuación:

(type_name) expression

Vea el siguiente ejemplo, que usa el operador de conversión forzada de tipos para dividir una variable entera entre otra variable entera, obteniendo un número de punto flotante:

Ejemplo

#include <stdio.h> int main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean ); }

Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:

Value of mean : 3.400000

Cabe señalar aquí que la precedencia del operador de conversión forzada de tipos es mayor que la de la división, por lo tantosumel valor de se convierte primero al tipodoubledouble, y luego se divide por count, obteniendo un valor de tipo double

La conversión de tipos puede ser implícita, ejecutada automáticamente por el compilador, o explícita, mediante el uso deel operador de conversión forzada de tipospara especificarla. En programación, utilizar siempre el operador de conversión forzada de tipos cuando se necesita una conversión de tipos es una buena práctica de programación

Promoción de enteros

La promoción de enteros se refiere al proceso deintounsigned intconvertir los tipos enteros menores queintounsigned intal tipo

Ejemplo

#include <stdio.h> int main() { int i = 17; char c = 'c'; /*El valor ASCII es 99*/ int sum; sum = i + c; printf("Value of sum : %d\n", sum ); }

Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:

Value of sum : 116

Aquí, el valor de sum es 116, porque el compilador realizó la promoción de enteros; al ejecutar la operación de suma real, convirtió el valor de 'c' al valor ASCII correspondiente

Conversiones aritméticas habituales

Conversiones aritméticas habitualesson la conversión forzada implícita de valores al mismo tipo. El compilador primero ejecutala promoción de enterosy, si los tipos de los operandos son diferentes, se convierten al tipo de mayor nivel que aparezca en la siguiente jerarquía:

Usual Arithmetic Conversion

Las conversiones aritméticas habituales no se aplican a los operadores de asignación ni a los operadores lógicos && y ||. Veamos el siguiente ejemplo para entender este concepto:

Ejemplo

#include <stdio.h> int main() { int i = 17; char c = 'c'; /*El valor ASCII es 99*/ float sum; sum = i + c; printf("Value of sum : %f\n", sum ); }

Cuando el código anterior se compila y ejecuta, produce los siguientes resultados:

Value of sum : 116.000000

Aquí, c primero se convierte a entero, pero como el valor final es de tipo float, se aplican las conversiones aritméticas habituales; el compilador convierte i y c a tipo de punto flotante y los suma para obtener un número de punto flotante

Otras extensiones