1

まず、私は C++ の初心者で、Xcode 4.6.2 を使用しています。コンパイラ構成はデフォルトです。コンパイラをgcc 4.2に切り替えただけです。小さなコードをコンパイルすると、次の警告が表示されます。

暗黙的な変換により 64 ビット値が 32 ビット値に短縮される 暗黙的な変換により整数の精度が失われる: 'unsigned long' から 'unsigned int' へ

これは、警告をトリガーするコードです。

median = temps[temps.size()/2];

ヒント: temps は double のベクトルで、median は double です

これらの警告を取り除くにはどうすればよいですか? これをコンパイラ構成で処理することは可能ですか (警告を無効にするという意味ではありません;-))、またはコードを変更する必要がありますか?

4

3 に答える 3

1

temps.size()(私が読むことができるものから)unsigned longを返します2が、(unsigned)intです。

試す

temps[(unsigned long)temps.size()/(unsigned long)2]

また

temps[(unsigned long)((unsigned long)temps.size()/(unsigned long)2)]
于 2013-05-27T03:03:45.370 に答える
0

プロジェクト設定の下で、セクション「LLVM GCC 4.2 - 警告」またはコンパイラに適したセクションに移動し、「すべての警告を禁止する」を選択します。

于 2013-10-13T00:01:37.870 に答える