如何在 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP