Нещодавно я натрапив на цю ідіому програмування:
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
! Існують й інші причини уникнення макросу, ніж "безпека типу", тому так само ймовірно, що викладач наводив вам поганий аргумент.