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
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
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:
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
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