如何在 C++ 中檢測整型溢位?


唯一安全的方法是在整數溢位發生前進行檢查。有一些迂迴的方式可以檢查整數溢位。所以如果你想檢測無符號整數加法的溢位,你可以檢查結果是否實際小於任何一個加數。例如:

unsigned int x, y;
unsigned int value = x + y;
bool overflow = value < x; // Alternatively "value < y" should also work

這是因為如果 x 和 y 都是無符號整數,如果相加後發生了溢位,它們的值不能大於任何一個加數,因為它們需要大於最大可能的無符號整數,才能環繞並超過這些值。

另一種方法是嘗試訪問 CPU 中的溢位標誌。一些編譯器提供了對其的訪問,然後你可以對其進行測試,但這並不是標準的。

還有其他方法可以實現此目的,但它們僅提供估計。你可以在此處檢視它們 − https://stackoverflow.com/a/199455/3719089


更新於: 2020-06-24

1K+ 瀏覽

開啟您的事業

完成課程並獲得認證

開始
廣告
© . All rights reserved.