私は、この変換がC++では警告を出しますが、cでは警告を出さない理由を探しています。それはC++が強く型付けされ、cが弱型であるという事実に関連していますか? それはコンパイルが警告を指摘しないように、実行中にcの型を判別できるためですか? ありがとうございます。なぜC++でdoubleをintに変換すると警告が出るのですか?
答えて
double
からint
への警告の有無は、CとC++の違いとは関係ありません。
警告(警告がどのように表示されたのか、その情報で質問を更新してください)が有効である可能性があります。 double
の切り捨てられた値が表現可能な範囲のint
の範囲外の場合、その動作は未定義です。範囲内にあり、数学的に整数に等しくない場合、変換によって情報が失われます。
コンパイラの中には、このようなことについて警告するものもあれば、そうでないものもあります。コンパイラは、指定したオプションに応じて警告を出したり出さないことがあります。
ありがとうコメント。私は最後のgccを使用して私の質問は理論的です。なぜCコンパイラは警告を表示しないのですか? – Pelegyair
@Pelegyair:理論的な理由はありません。 CとC++にまったく同じ考慮事項が適用されます。あなたは症状を見ています(あなたのC++コンパイラからの警告ですが、Cコンパイラからの警告ではありません)。繰り返しますが、使用しているコンパイラに関する情報で質問を更新してください。 –
マイナー: "double値が' int'の表現可能な範囲外にある場合 " - >範囲が_slightly_より大きい。例:-2147483648.999 ...〜2147483647.999 ... – chux
- 1. intからdoubleへの暗黙的な変換に関するコンパイラの警告
- 2. DoubleをIntに変換するのがSwiftのIntを返さないのはなぜですか?
- 3. char * argv [1]をintに変換し、C言語で警告なしで出力する方法
- 4. Cは関数の中でintをdoubleに変換します
- 5. データ変換警告が表示されるのはなぜですか?
- 6. intをdoubleに変換する
- 7. intからlonglongへの危険な変換:警告なし?
- 8. C++コンパイラがdoubleからintに変換されます
- 9. C#でIntをDoubleに変換できません
- 10. doubleからintへの可逆変換が可能ですか?
- 11. `` char``を `int`に変換すると` `%c" `が` printf`に存在するのはなぜですか?
- 12. doubleをStringに変換すると、Stringをdoubleに変換できないというエラーが発生する
- 13. なぜこのVBコードが暗黙の変換警告を出すのですか?
- 14. doubleが1.0なぜintに等しいのですか?
- 15. 暗黙の変換のためにintがdoubleに昇格し浮動しないのはなぜですか?
- 16. Qtの警告:QRectを変換するためのQREALを渡す:: QRect(int型、int型、int型、int型)
- 17. double(またはfloat)をintに変換するとどうなりますか?
- 18. Cでfloatにintを変換する
- 19. なぜPycharmが.sh bashスクリプトの "単純変数の使用"に関する警告を出すのですか?
- 20. 私の警告から警告を受けないのはなぜですか?
- 21. constexpr関数でC文字列を返す:なぜコンパイラから警告が出ないのですか?
- 22. GCCがこの暗黙の変換に対して警告するのはなぜですか?
- 23. arraylistをどのように変換するのですか<double> int []
- 24. 'double'から 'int'への変換では、変換が狭くなる必要があります
- 25. 'NSNumber'を 'Int'に設定する警告
- 26. なぜ& "14ビットInt"コードに "double"が作用するのですか?
- 27. Cで警告なしでfloat変数にdouble定数を代入しますか?
- 28. なぜ引数を渡すときにconstを使うと警告が出るのですか?
- 29. 警告が表示されるのはなぜですか?
- 30. なぜlog4jからこの警告が出ますか?
あなたが**データを失うのはちょうどその小数です。したがって、 "Obvious Logical Errors"では、警告が発生します。そして私はあなたがVisual Studioを意味するものと仮定します。 –
'cは弱い型です'あなたはどう思う? – dxiv
具体的な例がありますか? 'int x = 1.0;'はデフォルトでどちらの言語に対しても私に警告を出すものではありません。どのようなコンパイラを使用していますか? –