如何檢測 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 中的溢位標誌。一些編譯器允許訪問溢位標誌,你可以對其進行測試,但這不是標準。

更新於: 2019 年 7 月 30 日

307 次瀏覽

職業起航

完成課程獲取認證

開始學習
廣告
© . All rights reserved.