为什么在c ++中将double转换为int会发出警告?

时间:2016-07-19 21:31:36

标签: c++ c

我正在寻找确切的原因,为什么这种转换会在c ++上发出警告但不会在c上发出警告。是否与c ++强类型和c弱类型有关? 是因为c中的类型可以在运行时确定,所以编译没有指出警告? 谢谢。

1 个答案:

答案 0 :(得分:10)

doubleint的转换是否存在警告与C和C ++之间的任何差异无关。

警告(并且您没有告诉我们警告的内容;请使用该信息更新问题)可能有效。如果截断的double值超出int的可表示范围,则行为未定义。如果它在范围内,但在数学上不等于整数,则转换将丢失信息。

有些编译器会警告类似这样的事情,其他编译器不会 - 并且某个编译器可能会也可能不会发出警告,具体取决于您指定的选项。