Ich hatte diese seltsame Erfahrung mit Problem Nummer 10 auf Project Euler (tolle Seite übrigens). Die Aufgabe bestand darin, die Summe aller Primzahlen unter zwei Millionen zu berechnen.Keine Überlauf-Ausnahme für int in C#?
Ich benutzte ein int für die Summe, und mein Algorithmus produzierte eine Antwort, aber als ich es eingefügt habe, um die Antwort zu verifizieren, war es falsch.
Es stellte sich heraus, dass das Ergebnis zu groß war, um in einen Int zu passen, aber würde dies nicht zu einem Überlauffehler oder etwas führen? Stattdessen hat es nur einen Wert zurückgegeben, der weit von der wirklichen Antwort entfernt ist.
Als ich den Typ zu lang änderte, war alles gut.
Wollen Sie wirklich jede Integer-Operation für einen Überlauf zu überprüfen? –
Nun, es hätte mir in diesem speziellen Fall etwas Zeit gespart;) – erikric
In diesem Fall ja. Die überwiegende Mehrheit der Operationen kann jedoch möglicherweise nicht überlaufen. Es wäre interessant, wenn der Compiler dies beweisen und die Überprüfung als Ergebnis deaktivieren könnte, aber ich bezweifle es sehr. – Thorarin