Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Diferencia entre conversión de tipo (cast) y sufijo en C?

Estas en el tema de Diferencia entre conversión de tipo (cast) y sufijo en C? en el foro de C/C++ en Foros del Web. 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...
  #1 (permalink)  
Antiguo 06/11/2014, 20:06
 
Fecha de Ingreso: octubre-2008
Mensajes: 66
Antigüedad: 12 años, 6 meses
Puntos: 1
Diferencia entre conversión de tipo (cast) y sufijo en C?

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
  #2 (permalink)  
Antiguo 07/11/2014, 01:03
 
Fecha de Ingreso: octubre-2014
Ubicación: Madrid
Mensajes: 1.212
Antigüedad: 6 años, 7 meses
Puntos: 204
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.
  #3 (permalink)  
Antiguo 07/11/2014, 15:58
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Diferencia entre conversión de tipo (cast) y sufijo en C?

Coincido con que no hay ninguna diferencia entre las dos expresiones, pero creo que convendría aclarar que ambas devuelven un double.

:lareto :)
  #4 (permalink)  
Antiguo 10/11/2014, 02:34
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 10 años, 11 meses
Puntos: 73
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,
  #5 (permalink)  
Antiguo 15/11/2014, 13:13
 
Fecha de Ingreso: octubre-2008
Mensajes: 66
Antigüedad: 12 años, 6 meses
Puntos: 1
Respuesta: Diferencia entre conversión de tipo (cast) y sufijo en C?

Tenía esta duda, pues muchas gracias!

Etiquetas: cast, diferencia, tipo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:57.