Wie wird in C nach einem vorzeichenbehafteten Ganzzahlüberlauf ohne undefiniertes Verhalten gesucht?

Da ist (1):

// assume x,y are non-negative
if(x > max - y) error;

Und 2)

// assume x,y are non-negative
int sum = x + y;
if(sum < x || sum < y) error;

Was wird bevorzugt oder gibt es einen besseren Weg.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage