Как проверить на целочисленное переполнение со знаком в C без неопределенного поведения?
Есть (1):
// assume x,y are non-negative
if(x > max - y) error;
И (2):
// assume x,y are non-negative
int sum = x + y;
if(sum < x || sum < y) error;
Какой из них предпочтительнее или есть лучший способ.