Me he encontrado con este lenguaje de programación recientemente:
const float Zero = 0.0;
que luego se usa en las comparaciones:
if (x > Zero) {..}
¿Alguien puede explicar si esto es realmente más eficiente, legible o mantenible que:
if (x > 0.0) {..}
NOTA: Puedo pensar en otras razones para definir esta constante, solo me pregunto sobre su uso en este contexto.
x
tiene tipo float
, entonces x > 0.0
fuerza la promoción a double
, que podría ser menos eficiente. Sin embargo, esa no es una buena razón para usar una constante con nombre, solo para asegurarse de que sus constantes tengan el tipo correcto (por ejemplo 0f
, float(0)
o decltype(x)(0)
).
13.37
no es float
, es double
. Entonces, si querías un float
, es concebible que tu tutor fuera correcto. En algunos contextos (p. Ej., La asignación a un flotante) 13.37
se convertirá implícitamente al float
que deseaba, y en otros contextos (p. Ej., Deducción de tipo de plantilla) no lo será, mientras que static const float
siempre comienza como el tipo que deseaba. Por lo tanto, más seguro de tipo. Eso sí, así sería 13.37f
! Sin embargo, hay otras razones para evitar la macro que la "seguridad de tipo", por lo que es muy probable que el tutor le haya dado un argumento pobre.