2017-09-16 16 views
1

私は以下のコードを浮動小数点計算に強制することを習慣にしていますが、ちょうど私に起こりました.2との動作に違いはありますか?確かにそれほどうまく見えません。コンストラクタのようなスカラー型と同等の「C-スタイル」キャストの構文を使用しC++のlongからdoubleへのstaticキャストはdoubleコンストラクタの使用とどのように違いますか?

long blah = 3; 

// 1 

double d1 = 1/static_cast<double>(blah); 

// 2 note: not C-style (double) blah 

double d2 = 1/double(blah); 
+1

([int] xの代わりにstatic \ _cast (x)を使用する理由は何ですか?](https://stackoverflow.com/questions/103512/why-use-static-castintx-instead-of-intx ) –

+0

いいえ、私はそうは思わない。それはCスタイルのキャストではありません。 –

+1

それはすべてですが、名前はhttp://en.cppreference.com/w/cpp/language/explicit_cast _機能的なキャスト式[...]は対応するCスタイルのキャスト式とまったく同じです._ –

答えて

4

static_castconst_cast、および/またはreinterpret_castのために、必要とされる方の速記です。それは不正確なので、エラーを隠すことができます。

この場合、組み込み数値型間のすべての変換では、Cスタイルのキャストはstatic_castと同じです。それでも、多くのC++ユーザー(私を含む)は、それでも悪い習慣だと考えています。

+3

試行されたキャストの正確な順序については、http://en.cppreference.com/w/cpp/language/explicit_castを参照してください。 Cスタイルのキャストは成功した最初のものを使用します。 – patatahooligan

関連する問題