Eu me deparei com esse idioma de programação recentemente:
const float Zero = 0.0;
que é então usado nas comparações:
if (x > Zero) {..}
Alguém pode explicar se isso é realmente mais eficiente, legível ou sustentável do que:
if (x > 0.0) {..}
NOTA: Posso pensar em outras razões para definir essa constante. Estou apenas pensando em seu uso neste contexto.
xtiver tipo float, x > 0.0força a promoção para double, o que pode ser menos eficiente. Essa não é uma boa razão para usar uma constante nomeada, apenas para garantir que suas constantes tenham o tipo correto (por exemplo 0f, float(0)ou decltype(x)(0)).
13.37não é float, é double. Então, se você queria um float, é concebível que seu tutor estivesse correto. Em alguns contextos (por exemplo, a atribuição a um flutuador) 13.37será implicitamente convertido para o floatque você queria, e em outros contextos (por exemplo, dedução de tipo de modelo) não será, enquanto o static const floatsempre começa como o tipo que você pretendia. Portanto, mais seguro para o tipo. Lembre-se, assim seria 13.37f! Existem outras razões para evitar a macro que não a "segurança de tipo", portanto, é tão provável que o tutor esteja argumentando mal.