Heyy
Dein Ansatz zur Überlaufserkennung in C sieht schon gut aus, aber es gibt noch ein paar Dinge, die du verbessern könntest, um wirklich alle Fälle abzudecken.
Dein Code prüft nur auf Überläufe bei rein positiven oder rein negativen Zahlen. Es fehlen aber Fälle, bei denen ein Wert nahe INT_MAX oder INT_MIN liegt, zum Beispiel bei -1 und INT_MIN. Da kann es ebenfalls zu einem Überlauf kommen.
Hab den Code mal verbessert:
#include <stdio.h>
#include <limits.h>
int overflowDetect(int x, int y) {
// Überlaufprüfung bei positiven Werten
if (x > 0 && y > 0 && (x > INT_MAX - y)) {
return -1; // Überlauf erkannt
}
// Überlaufprüfung bei negativen Werten
if (x < 0 && y < 0 && (x < INT_MIN - y)) {
return -1; // Überlauf erkannt
}
// Wenn kein Überlauf, gib die Summe zurück
return x + y;
}
int main() {
int result = overflowDetect(-1, INT_MIN);
if (result == -1) {
printf("Überlauf erkannt!\n");
} else {
printf("Ergebnis: %d\n", result);
}
return 0;
}