可能重複:
g++ -Wall not warning about double-> int cast克++警告當雙/浮子被轉換成無符號的整數,而無需使用-Wconversion
每問題here,直接轉換從雙/浮子無符號整數不便攜式。我發現在我的代碼中發生了這種情況,並且我想告訴g ++如果發生這種情況會發出警告,但是我找不到這樣的選項。有誰知道是否有這樣做的選擇?
注意:我確實看到了Wconversion,但是它也會警告我不關心的其他所有類型的轉換(如將int轉換爲無符號整數,這對於標準是可移植的)。
編輯:這是我想爲它看到一個警告,一個代碼示例:
double dblNumber = -234;
unsigned long uintNumber = dblNumber;
在G ++的一個版本,這給了我0xFFFFFF16(這是-234 2的補數)的整數值。在另一個它給我0.很明顯,代碼是不明確的,這就是爲什麼它可以被理解爲不可移植。
@djechlin:*「注意:我確實看到了Wconversion,但它也會警告我不關心的其他所有類型的轉換(例如將int轉換爲無符號整數,這對於標準來說是可移植的)。」 *。 – Zeta
我承認我沒有看到其他問題,但並沒有真正解決不使用-WConversion問題。看起來奇怪的是,我並沒有警告這個默認情況,特別是因爲不同版本的g ++反應不同導致某些實現悄然失敗。 – KyleL
@KdawgUD你能展示一段代碼嗎?不知道您如何進行轉換。每當你明確地從一種類型轉換到另一種時,例如'un_signed_int_value =(unsigned int)double_value;'你告訴編譯器*我知道我在做什麼*。所以我不明白爲什麼編譯器會警告這種轉換。事實上,如果有明確的演員陣容,那麼將會禁止任何警告。除非我誤解了你的問題,否則你所問的是不可能的。 –