2011-12-30 109 views
1

有没有什么办法可以让int编译器发出警告来进行双重转换,即double value = 2;关于从int到double的隐式转换的编译器警告

这可能看起来太严格了,但我相信在某些情况下,像数学软件这样的限制可能是可以接受的,以在编译时捕获一些错误。

目标编译器是gcc/clang。

关于double - > int转换有很多问题,反之亦然,我没有找到任何有用的信息。

+0

如果您需要加倍,则需要加倍,无论该加倍是否可以精确表示。 – 2011-12-30 01:58:30

+0

如果强类型很重要 - 选择强类型语言。这里没有数据丢失,那为什么编译器会提醒你呢? – littleadv 2011-12-30 01:59:39

+0

GCC(4.6.1)使用'--help = warnings'列出了此选项: '-Wconversion-extra'警告大多数隐式转换。 但是,当我尝试它时,它会显示: cc1:warning:命令行选项'-Wconversion-extra'对于Fortran有效,但对C不适用[默认情况下启用] – 2011-12-30 02:07:51

回答

1

警告消息依赖于编译器,编译器选项用于启用或禁用它们尤其如此。不知道你使用什么编译器,这是不可能的。

但是,一般来说,大多数编译器只提供有损转换的警告,并且int - >double是与我一起工作的所有平台上的完美无损转换。

+0

当你有一个64位的int大于double的尾数所代表的内容时,int不会双精度失去精度? – user1118321 2011-12-30 02:01:11

+0

@ user1118321如果'int'是64位,转换可能会失去精度。但在C++中,“int”宽于32位的平台目前非常罕见。 – 2011-12-30 02:08:43

+0

我已经更新了问题,提到编译器是gcc/clang – 2011-12-30 08:03:48