Нещодавно я натрапив на цю ідіому програмування:
const float Zero = 0.0;
який потім використовується для порівнянь:
if (x > Zero) {..}
Хтось може пояснити, чи це насправді ефективніше читання чи технічніше, ніж:
if (x > 0.0) {..}
ПРИМІТКА. Я можу придумати інші причини, щоб визначити цю константу, я просто цікавлюсь її використанням у цьому контексті.
xтип має float, тоді він x > 0.0примушує просуватися до double, що може бути менш ефективним. Це не є вагомою причиною для використання названої константи, лише для того, щоб переконатися, що ваші константи мають правильний тип (наприклад 0f, float(0)або decltype(x)(0)).
13.37ні float, це double. Тож якщо ви хотіли floatтоді, можливо, ваш викладач був правильний. У деяких контекстах (наприклад, присвоєння поплавцю) 13.37буде неявно перетворено на те, floatщо ви хотіли, а в інших контекстах (наприклад, відрахування типу шаблону) цього не буде, тоді як static const floatзавжди починається як тип, який ви намітили. Отже, більш безпечний для типу. Зверніть увагу, так би і було 13.37f! Існують й інші причини уникнення макросу, ніж "безпека типу", тому так само ймовірно, що викладач наводив вам поганий аргумент.