Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
ST 88.08.1: Problem wie 88.08
#9
Das ist ja richtig übel, dass die Datentypen nicht typsicher sind.

Das Ganze sieht in der Tat nach einem Überlauf aus, der,
nachdem man sein Konto überzogen hat, ausgelöst wird
und zudem noch anfängt zu oszilieren.

Das Oszilieren findet im Monatsrythmus zum jewiligen 1. statt.

Sobald der negative Betrag wieder ausgeglichen wurde,
sind die 92... negativ.
Anscheinend immer zu Null.

Beispiel:
-92.... + 20 000 = 0
oder
-20 000 + 92.... = 0

@sojo
Da eine Typsicherung einzubauen ist nicht ganz trivial.

Nehmen wir ein unsigned Byte als Beispiel. Der Zahlenraum geht von
0-255. Was passiert, wenn ich 255+1 rechne?
Natürlich sollte 256 als Ergebnis rauskommen. Das ist aber größer als 8 Bit
und das Ergebnis wird 0 sein (Überlauf). Verhält sich der Datentyp wie gerade beschrieben, so gilt er nicht als typsicher.
Erhält man dagegen als Ergebnis 255 + Fehlermeldung, so wird das als typsicher gewertet.

Jetzt rechne ich aber nicht immer mit + und - und müsste bei jeder Rechnung prüfen, ob ich die Rechnung
a = b + c oder a = b * c etc. überhaupt ausführen darf.

Eine Prüfung könnte für eine Addition dann vereinfacht so aussehen:

if (( 255 - b) > c )
a = b + c;
else
ERROR();

(vorausgesetzt, b ist gültig und hat z.B. selbst keinen Überlauf erfahren)

Ähnliches müsste dann natürlich auch für die anderen Rechenoperationen
erstellt werden.

Eine Simulation strotzt natürlich von Berechnungen und wenn jede Operation vorher abgeprüft werden, leidet die Performance
erheblich.

Natürlich gibt es auch Tricks;
unsigned int a;
unsigned BYTE b, c;

....
a = b + c;

Damit umgeht man einen Überlauf.

Oder, bei einer Rechnung m / n kann n = 0 werden. m / 0 = Problem Wink
Trick: m / ( n + 1) .... Smile

Prissi und seine Leute werden den Fehler schon finden.
Zitieren


Nachrichten in diesem Thema
ST 88.08.1: Problem wie 88.08 - von hugo - 16-04-2006, Sunday-12:37:09
RE: ST 88.08.1: Problem wie 88.08 - von catfan - 16-04-2006, Sunday-13:20:29
[Kein Betreff] - von martinalex - 16-04-2006, Sunday-13:23:35
[Kein Betreff] - von Wurzelgnom - 16-04-2006, Sunday-13:28:37
[Kein Betreff] - von prissi - 16-04-2006, Sunday-21:45:37
[Kein Betreff] - von Wurzelgnom - 16-04-2006, Sunday-21:50:34
[Kein Betreff] - von sojo - 16-04-2006, Sunday-21:54:53
[Kein Betreff] - von prissi - 16-04-2006, Sunday-22:37:45
[Kein Betreff] - von hugo - 16-04-2006, Sunday-22:57:37
[Kein Betreff] - von prissi - 16-04-2006, Sunday-23:03:57
[Kein Betreff] - von hugo - 16-04-2006, Sunday-23:11:01
[Kein Betreff] - von prissi - 16-04-2006, Sunday-23:18:24
[Kein Betreff] - von hugo - 16-04-2006, Sunday-23:23:03
Fehler gefunden?! - von hugo - 17-04-2006, Monday-00:49:52
[Kein Betreff] - von prissi - 17-04-2006, Monday-00:59:18
[Kein Betreff] - von sojo - 17-04-2006, Monday-14:37:18
[Kein Betreff] - von Wurzelgnom - 17-04-2006, Monday-22:30:58
[Kein Betreff] - von hugo - 20-04-2006, Thursday-22:44:42
[Kein Betreff] - von prissi - 21-04-2006, Friday-00:08:48

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste