假設您有兩個32位DWORD x和y,如何檢測它們的總和是否會導致溢出,但不訴諸本地程序集來檢查進位標誌。我想要算術或二元運算符。我認爲可能有一些測試方法來弄清楚。謝謝檢測32位dword + dword進位/ C++
2
A
回答
5
1
應該非常節省承擔,告訴我,如果我錯過了任何情況下(這不會在編譯器秉承上班C++ 98或更高版本的標準):
int overflowSum(DWORD a, DWORD b) {
return (b > 0) ? (a + b < a) : (a + b > a);
}
如果考慮您的DWORD是無符號,可以將其簡化:
int overflowSum(DWORD a, DWROD b) {
return a + b < a;
}
相關問題
- 1. 32位和64位代碼的DWORD有多大?
- 2. C++ - DWORD十進制到DWORD十六進制
- 3. (DWORD),*(DWORD *)和(DWORD *)有什麼區別?
- 4. DWORD如何保持超過32位的值?
- 5. C++ DWORD * BYTE *
- 6. 獲取64位數據在WM_COPYDATA命令而不是預期的32位DWORD
- 7. 64位機器上的DWORD和DWORD_PTR
- 8. 無法從 'DWORD' 轉換參數1 'DWORD &&'
- 9. 無效從'DWORD(*)(void *)'轉換爲'DWORD(*)(void *)'
- 10. 測試是否在DWORD標誌中設置了特定位
- 11. DWORD和unsigned int
- 12. C++打破DWORD爲字符
- 13. C++/WinAPI - 從DWORD中刪除標誌(按位運算符?)
- 14. 64位Windows API:C/C++「DWORD」的大小是多少?
- 15. VBScript - DWORD註冊
- 16. DWORD char *轉換
- 17. 什麼鑄造了32位地址的類型(BYTE *)和(DWORD *)之間
- 18. BYTE轉換爲DWORD
- 19. 包裝值在DWORD
- 20. cmp DWORD PTR和mov DWORD PTR是什麼意思?
- 21. 返回DWORD從C++到C#(的DllImport)
- 22. VB.net註冊表DWord
- 23. 查找DWORD大小
- 24. 從DWORD爲const char *
- 25. dword ptr和dword ptr之間的區別:es
- 26. 如何在註冊表中設置最高位的DWORD
- 27. 立即調用與dword addr附近的調用dword
- 28. 閱讀DWORD從二進制文件
- 29. 在DWORD數組中找到最重要的DWORD
- 30. 36位存儲在DWORD中? (x86彙編MASM)
[入門 「扛」 在X + Y]的可能重複(http://stackoverflow.com/questions/6092102/getting-carry-in-xy ) – 2012-02-05 11:52:40