Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: jo2105 am 14. December 2012, 21:16

Titel: Integer fehlerhaft?!
Beitrag von: jo2105 am 14. December 2012, 21:16
Mir ist gerade aufgefallen, dass irgendwie hin und wieder Integer kaputt sind. Kaputt bedeutet, dass man mit ihnen nicht rechnen kann (als Ergebnis kommt 0 heraus). Wenn man ich den Integer ausgebe, wird die Zahl mit einem angehängten Ç (kein C). Das ist zumindest meistens der Fall. Manchmal sind es auch andere Zeichen dessen Existenz ich nichtmal kannte^^. Interessanterweise kann man den Fehler manchmal beheben, indem man vor der Ausgabe einen anderen Integer deklariert.
Ich frage mich vorallem wie diese Zeichen in die Ausgabe kommen. Eigentlich sollte es bei %x nur 1-F geben...

Vielleicht ist das ja ein verbreiterter Fehler in der Lowlevelprogrammierung. Ich hoffe das mir da wer weiterhelfen kann.
Titel: Re: Integer fehlerhaft?!
Beitrag von: Jidder am 14. December 2012, 22:06
Ja, das ist ein verbreiteter Fehler. Es ist allerdings ein Fehler in deinem Code. Vermutlich stimmt etwas mit deinen Ausgabefunktionen nicht.
Titel: Re: Integer fehlerhaft?!
Beitrag von: jo2105 am 14. December 2012, 22:13
Ja, das ist ein verbreiteter Fehler. Es ist allerdings ein Fehler in deinem Code. Vermutlich stimmt etwas mit deinen Ausgabefunktionen nicht.

Aber dann würden doch zumindest die Rechenoperationen funktionieren, oder irre ich mich?
Titel: Re: Integer fehlerhaft?!
Beitrag von: Jidder am 14. December 2012, 22:48
Die funktionieren auch. Wie stellst du denn fest, dass das Ergebnis nicht korrekt ist?

Es können natürlich noch mehr/andere Probleme als nur im Ausgabecode bestehen. Zum Beispiel, dass lokale Variablen von fehlerhaftem Code überschrieben werden. (Buffer Overflow)
Titel: Re: Integer fehlerhaft?!
Beitrag von: jo2105 am 14. December 2012, 23:23
Die funktionieren auch. Wie stellst du denn fest, dass das Ergebnis nicht korrekt ist?

Es können natürlich noch mehr/andere Probleme als nur im Ausgabecode bestehen. Zum Beispiel, dass lokale Variablen von fehlerhaftem Code überschrieben werden. (Buffer Overflow)

Wenn ich ein solche Variable irgendwo mit multipliziere und das Ergebnis ausgebe, kommt 0 raus. Das mit dem Buffer Overflow könnte natürlich sein. Ich habe da auch schon einen Verdacht wo der auftritt.
Titel: Re: Integer fehlerhaft?!
Beitrag von: jo2105 am 15. December 2012, 02:15
Es lag tatsächlich am itoa, wie ich gedacht hatte.

Vorher habe ich erst noch irgendwelche temporären Buffer benutzt um den String umzukehren. Jetzt wird es einfach direkt falschrum in den Buffer geschrieben.

Jetzt funktioniert auch endlich die PMM richtig. Danke für den Tipp.  :-)