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.
x
ha tipo float
, x > 0.0
forza 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.37
non 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.37
verrà implicitamente convertito nel valore float
desiderato e in altri contesti (ad es. Deduzione del tipo di modello) non lo sarà, mentre static const float
inizia 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.