Hola estimados,
Si tengo esta expresión de constantes: 1 + 2.3
¿Cuál es la diferencia entre: (float)1 + 2.3
con esto?: 1f + 2.3
| |||
Respuesta: Diferencia entre conversión de tipo (cast) y sufijo en C? Respuesta: ninguna. El compilador, al encontrarse una sentencia como la que indicas aplicará una optimización y en el código final no encontrarás la expresión, sino únicamente el resultado de la misma. Un saludo. |
| |||
Respuesta: Diferencia entre conversión de tipo (cast) y sufijo en C? En ese tipo de operaciones, el compilador va a promocionar todos los términos al tipo superior y efectuará la operación con arreglo al tipo superior. Así, en 1 + 2.3 1 será entero, pero 2.3 es de tipo double, por tanto el 1 promociona a double y el resultado será 1.0 + 2.3 = 3.3 (double). De todos modos, hay que tener cuidado, por ejemplo double x; x = 1/3; se evaluará primero 1/3, que dará 0, dado que el 1 y el 3 los tomará como enteros y el resultado de esa división entera es 0. A continuación promociona este resultado a double, con lo que x valdrá 0.0; sin embargo, añadiendo un punto decimal, un sufijo o un casting a cualquiera de los términos del lado derecho, el resultado será correcto. Saludos, |
Etiquetas: |