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.
xtiene tipo float, entonces x > 0.0fuerza 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.37no 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.37se convertirá implícitamente al floatque deseaba, y en otros contextos (p. Ej., Deducción de tipo de plantilla) no lo será, mientras que static const floatsiempre 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.