¿Qué f
indican después de los números? ¿Es esto de C o de Objective-C? ¿Hay alguna diferencia en no sumar esto a un número constante?
CGRect frame = CGRectMake(0.0f, 0.0f, 320.0f, 50.0f);
¿Puedes explicar por qué no escribiría simplemente:
CGRect frame = CGRectMake(0, 0, 320, 50);
objective-c
c
floating-point
typeoneerror
fuente
fuente
En caso de duda, compruebe la salida del ensamblador. Por ejemplo, escriba un pequeño fragmento mínimo, como este
Luego compílelo en ensamblador con la
-S
opción.Guarde la salida del ensamblador en el
test.s
archivo y elimínela.0f
de las constantes y repita el comando de compilación. Luego haz unadiff
de las nuevastest.s
y anteriores. Piense que eso debería mostrar si hay diferencias reales. Creo que muchos tienen una visión de lo que creen que hace el compilador, pero al final del día, uno debería saber cómo verificar las teorías.fuente
-O
. Estoy en i686-apple-darwin10-gcc-4.2.1 (GCC)A veces hay una diferencia.
fuente
Le dice a la computadora que este es un número de punto flotante (supongo que estás hablando de c / c ++ aquí). Si no hay f después del número, se considera un doble o un entero (dependiendo de si hay un decimal o no).
fuente
Un literal de punto flotante en su código fuente se analiza como un doble. Asignarlo a una variable de tipo float perderá precisión. Mucha precisión, estás desperdiciando 7 dígitos significativos. El sufijo "f" te permite decirle al compilador: "Sé lo que estoy haciendo, esto es intencional. No me molestes".
Las probabilidades de producir un error no son tan pequeñas por cierto. Muchos programas se han hundido en una comparación de punto flotante mal concebida o suponiendo que 0,1 es exactamente representable.
fuente
El del
f
que estás hablando probablemente esté destinado a decirle al compilador que está trabajando con un flotador. Cuando omite elf
, generalmente se traduce a un doble.Ambos son números de coma flotante, pero a
float
usa menos bits (por lo tanto, más pequeños y menos precisos) que adouble
.fuente
Es una cosa de C: los literales de punto flotante son de doble precisión (doble) de forma predeterminada. Agregar un sufijo f hace que sean de precisión simple (flotante).
Puede usar ints para especificar los valores aquí y, en este caso, no hará ninguna diferencia, pero usar el tipo correcto es un buen hábito: la coherencia es algo bueno en general, y si necesita cambiar estos valores más adelante, Sabrás a primera vista de qué tipo son.
fuente
De C. Significa constante literal flotante. Puede omitir tanto "f" como ".0" y usar ints en su ejemplo debido a la conversión implícita de ints a flotantes.
fuente
Es casi seguro que es de C y refleja el deseo de usar un tipo 'flotante' en lugar de un tipo 'doble'. Es similar a sufijos como L en números para indicar que son enteros largos. Puede usar números enteros y el compilador se convertirá automáticamente según corresponda (para este escenario específico).
fuente
Por lo general, le dice al compilador que el valor es a
float
, es decir, un entero de punto flotante. Esto significa que puede almacenar números enteros, valores decimales y exponenciales, por ejemplo1
,0.4
o1.2e+22
.fuente