Mi sono imbattuto recentemente in questo linguaggio di programmazione:
const float Zero = 0.0;
che viene quindi utilizzato nei confronti:
if (x > Zero) {..}
Qualcuno può spiegare se questo è davvero più efficiente, leggibile o mantenibile di:
if (x > 0.0) {..}
NOTA: posso pensare ad altri motivi per definire questa costante, mi sto solo chiedendo quale sia il suo utilizzo in questo contesto.
xha tipo float, x > 0.0forza la promozione a double, che potrebbe essere meno efficiente. Questo non è un buon motivo per usare una costante con nome, solo per assicurarsi che le costanti abbiano il tipo corretto (es 0f. float(0)O decltype(x)(0)).
13.37non lo è float, lo è double. Quindi, se lo volevi float, è concepibile che il tuo tutor fosse corretto. In alcuni contesti (ad es. Assegnazione a un float) 13.37verrà implicitamente convertito nel valore floatdesiderato e in altri contesti (ad es. Deduzione del tipo di modello) non lo sarà, mentre static const floatinizia sempre come tipo desiderato. Quindi, più sicuro per i tipi. Intendiamoci, così sarebbe 13.37f! Esistono altri motivi per evitare la macro oltre alla "sicurezza dei tipi", quindi è altrettanto probabile che il tutor ti dia una discussione scadente.