Q
檢查溢出條件運算
3
A
回答
1
首先檢查操作數的大小,然後使用std::numeric_limits
。例如,對於另外:
#include <limits>
unsigned int a, b; // from somewhere
unsigned int diff = std::numeric_limits<unsigned int>::max() - a;
if (diff < b) { /* error, cannot add a + b */ }
你一般不能可靠地檢測算術錯誤後的事實,所以你必須做之前,所有的檢查。
您可以很容易地對這種方法進行模板化,使其適用於任何數字類型。
+0
嗨,有沒有任何方法使用一些邏輯,而不使用任何模板來解決這個問題? – pravs
+0
我以爲你可以檢測後:'a + = b;如果(a
+0
@pravs:用'UINT_MAX'替換'std :: numeric_limits
相關問題
- 1. 整數運算無溢出檢查
- 2. 用於算術運算的溢出和範圍檢查
- 3. 檢查溢出
- 4. 檢查算術溢出並獲得溢出計數?
- 5. 檢查C++下溢/溢出?
- 6. strtoXX:檢查溢出
- 7. MIPS溢出檢查
- 8. (!!)運算符溢出整數
- 9. 算術運算溢出ASP.net 2.0 VB
- 10. 算術運算導致溢出。
- 11. 算術溢出與算術運
- 12. NUnit System.OverflowException:算術運算導致溢出
- 13. Oracle:算術運算導致溢出
- 14. 爲什麼在C#條件運算符時出現堆棧溢出異常?
- 15. 檢查WrapPanel是否溢出?
- 16. 轉到:bytes.Repeat檢查溢出
- 17. boost :: multiprecision :: cpp_dec_float_50溢出檢查
- 18. 溢出檢查不工作
- 19. 「算術運算中溢出或下溢」WPF特定問題
- 20. 條件運算
- 21. 條件運算
- 22. 隊列溢出條件
- 23. 創建方法,檢查x + y是否會使用按位運算溢出
- 24. 算術溢出
- 25. 無符號溢出模運算符C
- 26. Java的%運算符是否溢出?
- 27. C#6 null條件運算符檢查.Any()?
- 28. 檢查與SQL IN類似的多個條件運算符
- 29. 通過位運算符代替條件檢查
- 30. 如何檢查IF運算符的三個條件?
我的問題是專門針對無符號整數 – pravs
嚴格來說,無符號算術不會溢出;它以明確的方式環繞。但這只是對「溢出」這個詞的含義的一個諷刺,它並沒有回答你的問題。 –