kkty’s blog

情報科学科

C/C++でオーバーフローするか調べる

簡単ですが...

足し算

bool will_overflow_add(int64_t a, int64_t b) {
    return ((b > 0 && a > INT64_MAX - b) || (b < 0 && a < INT64_MIN - b));
} 

引き算

bool will_overflow_sub(int64_t a, int64_t b) {
    return ((b < 0 && a > INT64_MAX + b) || (b > 0 && a < INT64_MIN + b));
}