Articles

Fundición de tipo C

Anuncios

Convertir un tipo de datos en otro se conoce como fundición de tipo o conversión de tipo. Por ejemplo, si desea almacenar un valor ‘largo’ en un entero simple, puede escribir cast ‘largo’ a ‘int’. Puede convertir los valores de un tipo a otro utilizando explícitamente el operador fundido de la siguiente manera:

(type_name) expression

Considere el siguiente ejemplo en el que el operador fundido hace que la división de una variable entera por otra se realice como una operación de coma flotante −

#include <stdio.h>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 el siguiente resultado:

Value of mean : 3.400000

Debe tenerse en cuenta aquí que el operador de conversión tiene prioridad sobre la división, por lo que el valor de suma se convierte primero a tipo doble y finalmente obtiene dividido por conteo, dando un valor doble.Las conversiones de tipo

pueden ser implícitas, que el compilador realiza automáticamente, o pueden especificarse explícitamente mediante el uso del operador cast. Se considera una buena práctica de programación utilizar el operador de fundición siempre que sea necesario realizar conversiones de tipos.

Promoción de enteros

Promoción de enteros es el proceso por el cual los valores de tipo entero «más pequeños» que int o unsigned int se convierten en int o unsigned int. Considere un ejemplo de agregar un carácter con un entero –

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

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Value of sum : 116

Aquí, el valor de sum es 116 porque el compilador está haciendo una promoción de enteros y convirtiendo el valor de ‘c’ a ASCII antes de realizar la operación de adición real.

Conversión aritmética habitual

Las conversiones aritméticas habituales se realizan implícitamente para convertir sus valores a un tipo común. El compilador realiza primero la promoción de enteros; si los operandos todavía tienen tipos diferentes, se convierten al tipo que aparece más alto en la siguiente jerarquía:

Las conversiones aritméticas habituales no se realizan para los operadores de asignación, ni para los operadores lógicos &&& y|/. Tomemos el siguiente ejemplo para entender el concepto −

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

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado −

Value of sum : 116.000000

Aquí, es fácil entender que primero c se convierte en entero, pero como el valor final es doble, se aplica la conversión aritmética habitual y el compilador convierte i y c en ‘flotador’ y agrega que producen un resultado ‘flotante’.

Anuncios