Logo

Programming-Idioms

This language bar is your friend. Select your favorite languages!
  • C

Idiom #85 Check if integer addition will overflow

Write boolean function addingWillOverflow which takes two integers x, y and return true if (x+y) overflows.

An overflow may be above the max positive value, or below the min negative value.

#include <limits.h>
#include <stdbool.h>
bool addingWillOverflow(int x, int y) {
  return ((x > 0) && (y > INT_MAX - x)) ||
         ((x < 0) && (y < INT_MIN - x));
}

INT_MAX and INT_MIN are defined in limits.h header, bool type is defined in stdbool.h
function Adding_Will_Overflow (X, Y : Integer) return Boolean is
begin
   return X > 0 and Y > 0 and X > Integer'Last - Y;
end Adding_Will_Overflow;

PROBLEM: this doesn't detect negative overflow.

New implementation...
< >
deleplace