最近、このプログラミングのイディオムに出会いました。
const float Zero = 0.0;
これは比較で使用されます:
if (x > Zero) {..}
これが実際よりも効率的であるか、読み取り可能または保守可能であるかを誰でも説明できますか?
if (x > 0.0) {..}
注:この定数を定義する他の理由を考えることができますが、このコンテキストでの使用について疑問に思っています。
x
typeを持っている場合float
、にx > 0.0
強制的に昇格させますがdouble
、効率が低下する可能性があります。それはあなたの定数(例えば正しい型を持っているだけで確認することのために、名前付き定数かかわらを使用するための十分な理由ではない0f
、float(0)
またはdecltype(x)(0)
)。
13.37
でなくfloat
、double
です。だからあなたが望むなら、float
それはあなたの家庭教師が正しかったと考えられます。一部のコンテキスト(フロートへの割り当てなど)13.37
は暗黙的に必要なものに変換されfloat
ますが、他のコンテキスト(テンプレートタイプの推論など)では変換されませんが、static const float
常に意図したタイプとして開始されます。したがって、よりタイプセーフです。あなたの心、そうだろう13.37f
!ただし、「タイプセーフ」以外にマクロを回避する理由は他にもあります。そのため、先生があなたに不適切な議論を与えていた可能性があります。