Tom: C++: Register Überlauf beim Rechnen abfangen

Beitrag lesen

Hello steckl,

1: 1
2: 2
3: 6
4: 24
5: 120
6: 720
7: 5040
8: 40320
9: 362880
10: 3628800
11: 39916800
12: 479001600
13: 1932053504
14: 1278945280

Ab 35 kommt 0, man sieht aber, dass der Überlauf schon viel früher stattgefunden hat. Es gibt wohl eher bei 34 zufällig einen Überlauf, so dass genau 0 rauskommt. Wenn man dann noch was damit multipliziert bleibt das Ergebnis natürlich immer 0.

Du hast Recht. 13! ist der letzte richtig ausgerechnete Wert.
Es ist also kein "kontrollierter Überlauf", sondern, wie Du sagst, einfach ein Ergebnis, das zufällig 0 ergibt...

Da wäre es ja bei dieser Aufgabe einfacher, das Ergebnis gelich als Stringarray zu speichern. rechnen kann mit diesem Zahlen mit 32-Bit als Ergebnisgröße sowieso keiner mehr.

Das war auch eigentlich gar nicht die AUfgabe, sondern herauszufinden, ob man den Überlauf sicher erkennen kann. Schade, mit Assembler und Turbo-Pascal geht es. Bei Tp gibt der Compiler einen abfangbaren Fehler - getestet allerdings nur für Intel x86-Plattform. Was OS400 dazu sagen würde, weiß ich nicht.

Liebe Grüße aus Syburg bei Dortmund

Tom vom Berg

--
Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de