(もし興味があるなら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を追加すると事態が変わることはありますか?
2つの両方に精度の指定があるため、これは文脈のタイプミスのように感じます。しかし、1.0fはまだ読みやすくなっています。 –
著者はおそらく、 'float f = 1.0;'の代わりに 'float f = 1.0f;'を提案するつもりでした。 'f'接尾辞の有無がポイントです。 (とにかく 'float'ではなく' double'を使うのが普通です。) –
'float'に変換したときに値が変化する' double'定数で 'float'を初期化すると良いコンパイラが警告するはずです。一般に、定数に 'f'という接尾辞が付いているのと同じコードを生成します。これは、最初に 'double'に変換されたときと' float'に直接変換されるときとでは異なるいくつかの数字があるからです。プログラマがこれらを意図的に使用するのは珍しいことですが、言語の正当な使用であり、記述されているとおりにコンパイルする必要があります。 –