說你有2個號碼,每個典型的數學運算是有可能預測(不顯著開銷)的操作是否會導致在這些數字目前爲代表的類型的溢出?是否可以預測數學運算是否會導致溢出?
回答
是。
爲了簡單起見,我們假設溢出發生在100。
a * b >= 100
,我們有溢出
因此,對於a = n
,如果b >= 100/n
,我們有溢出。如果a
或b
爲0,則表示沒有溢出。
這對任何需要增加右手常數的數學設置都無效,因爲溢出檢測會溢出。但是,任何給定的操作步驟都可能會溢出,所以您確實需要在機器級別而不是算法級別之前檢查每個添加和乘法。因此,您需要將您的問題劃分爲最小的已知數量,以有效使用此溢出檢測。
我寧願讓語言拋出異常,但那只是我。
打開溢出保護,然後再應用操作。如果拋出溢出異常,或者錯誤寄存器設置了溢出位,或者您的環境告訴您有關該問題,那麼您知道如果再次執行該操作,則會發生溢出。
並非所有機器都具備此功能。 – 2010-08-19 22:08:55
對於總和:
MAX_NUMBER - A < B
會有溢出
如果A是否定的,那麼你將在你的測試 – 2010-08-19 23:27:42
@保羅R您是對得到一個溢出,有必要檢查,如果A> 0。並且如果兩者都是否定的,則會溢出MIN_NUMBER。 – 2010-08-20 12:07:44
- 1. Java的%運算符是否溢出?
- 2. BigInteger是否會溢出?
- 3. `recv()`是否會導致緩衝區溢出?
- 4. 算術運算導致溢出。
- 5. Oracle:算術運算導致溢出
- 6. ValueTypes是否會導致GC?
- 7. Java檢查平方整數是否導致溢出
- 8. 能通過setTimout調用自己的函數是否會導致溢出?
- 9. System.DirectoryServices.DirectorySearcher導致「算術運算導致溢出」錯誤
- 10. System.DirectoryServices.DirectorySearcher導致「算術運算導致溢出」錯誤
- 11. 檢測元素是否進入溢出
- 12. 檢測是否溢出沒有javascript
- 13. 是否可以預測程序運行需要多長時間?
- 14. 類型是否可以自行導出?
- 15. 使用VS2008導致「算術運算導致溢出」的PL/SQL AVG函數
- 16. 爲什麼vbScript「和」運算符會導致溢出錯誤?
- 17. 算術運算導致溢出MySQL數據庫連接打開
- 18. 算術運算導致溢出。 (添加整數)
- 19. c sizeof()會導致溢出?
- 20. 是否可以對同一列但不同行的值進行數學運算?
- 21. CLLocationManager是否會導致此崩潰?
- 22. fdopen()是否會導致內存泄漏?
- 23. 這是否會導致內存泄漏?
- 24. 這是否會導致保留週期?
- 25. Lua:這是否會導致段錯誤
- 26. shink_to_fit是否會導致重新分配?
- 27. 此代碼是否會導致死鎖?
- 28. 這是否會導致內存泄漏?
- 29. INSERT操作是否會導致死鎖?
- 30. 這是否會導致內存泄漏?
這可能是在一天結束的時候更便宜,讓不同的語言(在特殊情況下),比鐵圈試圖覆蓋所有的跳以及可能溢出的情況。 – 2010-08-19 22:11:20
不幸的是,舊的語言不走這條路,而且幸運的,除非你耗盡內存較新的就是沒有這個問題:P – 2010-08-19 22:29:16
「除非你運行內存不足」是正確的?當算術運算產生的結果超出操作返回的數據類型範圍時,會發生溢出異常。 – 2010-08-19 23:14:02