|
Lenguaje C |
Conversión de tipos
Cuando escribimos una expresión aritmética a+b, en la cual hay variables o valores de distintos tipos, el compilador realiza determinadas conversiones antes de que evalúe la expresión. Estas conversiones pueden ser para 'aumentar' o 'disminuir' la precisión del tipo al que se convierten los elementos de la expresión. Un ejemplo claro, es la comparación de una variable de tipo int con una variable de tipo double. En este caso, la de tipo int es convertida a double para poder realizar la comparación.
Los tipos pequeños son convertidos de la forma siguiente: un tipo char se convierte a int, con el modificador signed si los caracteres son con signo, o unsigned si los caracteres son sin signo. Un unsigned char es convertido a int con los bits más altos puestos a cero. Un signed char es convertido a int con los bits más altos puestos a uno o cero, dependiendo del valor de la variable.
Para los tipos de mayor tamaño:
- Si un operando es de tipo double, el otro es convertido a double.
- Si un operando es de tipo float, el otro es convertido a float.
- Si un operando es de tipo unsigned long, el otro es convertido a unsigned long.
- Si un operando es de tipo long, el otro es convertido a long.
- Si un operando es de tipo unsigned, el otro es convertido a unsigned.
- Si no, los operandos son de tipo int.
Una variable o expresión de un tipo se puede convertir explícitamente a otro tipo, anteponiéndole el tipo entre paréntesis.
void cambio_tipo (void)
{
float a;
int b;
b = 10;
a = 0.5;
if ( a <=(float) b )
menor();
}
















































