Ich bin kürzlich auf diese Programmiersprache gestoßen:
const float Zero = 0.0;
Das wird dann in Vergleichen verwendet:
if (x > Zero) {..}
Kann mir jemand erklären, ob dies wirklich effizienter, lesbarer oder wartbarer ist als:
if (x > 0.0) {..}
HINWEIS: Ich kann mir andere Gründe vorstellen , um diese Konstante zu definieren. Ich frage mich nur, wie sie in diesem Zusammenhang verwendet wird.
x
type vorhanden ist float
, wird die x > 0.0
Beförderung zu erzwungen double
, was möglicherweise weniger effizient ist. Das ist kein guter Grund für eine benannte Konstante verwendet allerdings nur für dafür , dass Ihre Konstanten den richtigen Typ haben (zB 0f
, float(0)
oder decltype(x)(0)
).
13.37
nicht float
, es ist double
. Also , wenn Sie will float
dann war es denkbar Ihr Tutor richtig. In einigen Kontexten (z. B. Zuweisung zu einem Float) 13.37
wird implizit in den von float
Ihnen gewünschten konvertiert , in anderen Kontexten (z. B. Abzug von Vorlagentypen) wird dies nicht der Fall sein, während der Datentyp static const float
immer wie von Ihnen beabsichtigt beginnt. Daher typsicherer. Wohlgemerkt, wäre es auch so 13.37f
! Es gibt jedoch noch andere Gründe, das Makro zu vermeiden, als "Typensicherheit". Es ist also genauso wahrscheinlich, dass der Tutor Ihnen ein schlechtes Argument geliefert hat.