2014-01-25 23 views
1

雖然提到了C99標準6.3.1.4實際浮動和整數,我發現以下關於浮點數到整數類型之間可能未定義行爲的解釋。在實際浮動和整數之間進行鑄造

如果組成部分的價值不能由整數類型來表示,該行爲是未定義

我有一個關於同下面的問題。下列哪些條件歸類爲未定義的行爲

  1. 積分部分和整數類型的簽名是不同的。
  2. 積分部分大於可以用整數類型表示的MAX值。

回答

3

如果要轉換爲範圍爲[TYPE_MIN,TYPE_MAX]的帶符號整數類型,則如果浮點源值不在打開間隔(TYPE_MIN-1,TYPE_MAX + 1)中,則行爲未定義。

如果要轉換爲範圍爲[0,UTYPE_MAX]的無符號整數類型,則如果浮點源值不在打開間隔(-1,UTYPE_MAX + 1)中,則行爲未定義。

所以是的,你的兩個條件都會產生未定義的行爲(只要你認爲-0.5的整數部分沒有負符號)。

+0

感謝您的快速響應!感謝你的幫助。 –