¿Hay una diferencia entre 0 y 0.0 en C++? ¿Cuál deberías usar para inicializar un doble?C++ diferencia entre 0 y 0.0
Gracias
¿Hay una diferencia entre 0 y 0.0 en C++? ¿Cuál deberías usar para inicializar un doble?C++ diferencia entre 0 y 0.0
Gracias
Un literal 0
se considera que es un int
literal; literal 0.0
es un literal double
. Al asignar a double
, cualquiera de los dos funcionará (dado que el int
se puede convertir en una conversión de ampliación); sin embargo, la conversión de 0.0
a int
es una conversión de reducción, y debe hacerse explícitamente; es decir, (int)0.0
.
Uno parece ser un entero literal, el otro un punto flotante literal. Realmente no le importa al compilador si inicializa flotantes o dobles con literales enteros. En cualquier caso, el literal se compilará en una representación interna.
Tiendo a sugerir 0.0 para que su intención (a otros programadores) quede explícitamente clara.
Intento mantener mis constantes homogéneas. 0 para los ints. 0.0f o 0.f para flotar y 0.0 para doble.
Para mí, la razón más importante para hacer esto es que el compilador y el programador vean lo mismo.
Si hago esto ...
float t=0.5f;
float r;
r= 1 * t;
... debe ser asignado r 0 o 0.5? No hay dudas si hago esto en su lugar ...
float t=0.5f;
float r;
r= 1.0f * t;
y 0.0f es un valor flotante. : D –
@Rob, ¿está diciendo que un doble no se puede convertir implícitamente en un int? Considera 'int a = 0.0;'. –
Un doble ciertamente puede asignarse a un int sin un molde explícito. Esta parte de la respuesta necesita ser revisada. –