[問題] 如何自動偵測整數除法的錯誤

看板C_and_CPP作者 (noOneKnows)時間12年前 (2013/11/23 09:29), 編輯推噓2(2011)
留言13則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC 4.8.2 or VC 2013 express 問題(Question): 新手請問,程式中因為擔心整數除法的錯誤, 舉例如 X / 0 INT_MIN / -1 然後會在 source code 加程式碼保護 or 確認 但難免有漏網之魚,請問是否有編譯器選項或其他工具能幫忙偵測 自己忘記加保護機制的 code 呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.110.244.218 ※ 編輯: applecool 來自: 123.110.244.218 (11/23 09:30)

11/23 10:11, , 1F
你runtime輸入根本測不出來,要自己error handle
11/23 10:11, 1F
我覺得還是能編譯期幫忙檢查

11/23 11:13, , 2F
用 lint 之類的要錢的東西去測。
11/23 11:13, 2F

11/23 11:14, , 3F
搜尋所有 "/" 人工check
11/23 11:14, 3F

11/23 12:53, , 4F
樓上不是開玩笑的吧?? 你知道 // 跟 /**/ 有多少嗎?
11/23 12:53, 4F

11/23 13:12, , 5F
我錯了,那改搜尋 " / " 吧
11/23 13:12, 5F

11/23 13:50, , 6F
想請問 INT_MIN / 1 會有什麼問題?
11/23 13:50, 6F

11/23 13:51, , 7F
只記得除以-1會有問題...
11/23 13:51, 7F
多謝提醒 ※ 編輯: applecool 來自: 123.110.244.218 (11/23 14:30)

11/24 08:41, , 8F
vc2010遇到 /0 會提示, INT_MIN/-1就不會
11/24 08:41, 8F

11/24 08:42, , 9F
但runtime遇到時會出exception
11/24 08:42, 9F

11/24 08:49, , 10F
大多數情況都是遇到runtime時的錯誤
11/24 08:49, 10F

11/24 08:54, , 11F
所以都會對function 的input進行檢查, 有錯就停止程式
11/24 08:54, 11F

11/24 08:55, , 12F
另外,你的問題或許用coverity可以檢查出來!?
11/24 08:55, 12F

12/07 15:37, , 13F
多謝多謝!
12/07 15:37, 13F
文章代碼(AID): #1Ia0K6TN (C_and_CPP)