2013-02-24 3 views
11

(もし興味があるならftp://ftp.idsoftware.com/idstuff/doom3/source/CodeStyleConventions.docで)、私は同上Techの公に利用可能なコーディング規則の文書を読んでいた、と私は完全に理解していなかった大会に出くわした:"1.0f"と "1.f"の違いは何ですか?ジョン・カーマックの崇拝者として

使用精度を明示的に二重の必要がない限り、浮動小数点値の指定。

float f = 0.5f

代わりの

float f = 0.5;

そして

float f = 1.0f;

代わりの

float f = 1.f;

これらはどう違うのですか?

最初の例の2つの違いを理解することができます(後者はフードの下でdouble-to-float変換を行います)。しかし、実行時の違いがないため、同じバイトコード。

浮動小数点値の宣言に後続の0を追加すると事態が変わることはありますか?

+1

2つの両方に精度の指定があるため、これは文脈のタイプミスのように感じます。しかし、1.0fはまだ読みやすくなっています。 –

+0

著者はおそらく、 'float f = 1.0;'の代わりに 'float f = 1.0f;'を提案するつもりでした。 'f'接尾辞の有無がポイントです。 (とにかく 'float'ではなく' double'を使うのが普通です。) –

+0

'float'に変換したときに値が変化する' double'定数で 'float'を初期化すると良いコンパイラが警告するはずです。一般に、定数に 'f'という接尾辞が付いているのと同じコードを生成します。これは、最初に 'double'に変換されたときと' float'に直接変換されるときとでは異なるいくつかの数字があるからです。プログラマがこれらを意図的に使用するのは珍しいことですが、言語の正当な使用であり、記述されているとおりにコンパイルする必要があります。 –

答えて

12

浮動小数点値の宣言に後続の0を追加すると事態が変わることはありますか?

ゼロを追加する唯一の「もの」は可読性です。コンパイラは気にしないので、結果のコードはまったく同じになりますが、ゼロの定数は人間の読者が読みやすくなります。

+0

可読性!とても見過ごされがちです。 – Johnsyweb

+2

人間だけに意味がある、はい。読みやすさのために、そうでないかもしれない。数字を扱うほとんどの人は、後ろの0が有効数字の桁数を示す規約に従います。 –

関連する問題