2011-12-30 21 views
1

intをダブル変換するためのコンパイラの警告を有効にする方法はありますか?つまりdouble value = 2;intからdoubleへの暗黙的な変換に関するコンパイラの警告

これはあまりにも制限的に見えるかもしれませんが、私は、数学的ソフトウェアのようないくつかのケースでは、このような制限がコンパイル時にいくつかのバグを受け入れることができると信じています。

ターゲットコンパイラはgcc/clangです。

double - > int変換に関して多くの質問がありますが、その逆もあります。有用な情報は見つかりませんでした。

+0

ダブルが必要な場合は、そのダブルを正確に表すことができるかどうかにかかわらず、ダブルが必要です。 –

+0

強い入力が重要な場合は、厳密に型指定された言語を選択します。ここにデータが失われることはありません。だから、コンパイラはなぜあなたに警告しますか? – littleadv

+0

GCC(4.6.1)は '--help = warnings'でこのオプションをリストしています: ' -Wconversion-extra'ほとんどの暗黙的な変換について警告します。 'cc1:警告:コマンドラインオプション '-Wconversion-extra'はFortranでは有効ですが、Cでは無効です。[デフォルトで有効]' –

答えて

1

警告メッセージはコンパイラに依存します。これらのメッセージを有効または無効にするコンパイラオプションは特にそうです。どんなコンパイラを使うのか知らなくても、言うことはできません。

一般に、ほとんどのコンパイラは損失の多い変換について警告を出すだけです。int - >doubleは、私が扱うすべてのプラットフォームで完全にロスレスな変換です。

+0

倍精度浮動小数点型(double型)の仮数で表現できるものよりも大きい64ビット整数を持つときにintを倍精度にすることはできませんか? – user1118321

+0

@ user1118321 'int 'が64ビットの場合、変換は精度を失う可能性があります。しかし、C++では、 'int'が32ビットより広いプラットフォームは当面はまれです。 –

+0

私はコンパイラがgcc/clangであることを述べるために更新された質問があります –

関連する問題