如何檢測 C/C++ 中的整數溢位?
唯一安全的方法是在整數溢位發生之前檢查溢位。然而,有些取巧的方法可以用來檢查整數溢位。因此,如果你想檢測無符號 int 相加時出現的溢位,你可以檢查結果是否實際小於被加的任何一個值。例如,
示例程式碼
unsigned int x, y; unsigned int value = x + y; bool overflow = value < x; // Alternatively "value < y" should also work
這是因為如果 x 和 y 都是無符號 int,如果相加並溢位,它們的數值不可能大於其中任何一個值,因為它需要大於最大的可能無符號 int 值才能環繞並超過這些值。
另一種方法是嘗試訪問 CPU 中的溢位標誌。一些編譯器允許訪問溢位標誌,你可以對其進行測試,但這不是標準。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP