在 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-09-25

293 瀏覽

開啟您的職業生涯

完成課程,獲取認證

開始
廣告
© . All rights reserved.