2011-12-30 79 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

相關問題