Autor Thema: Integer fehlerhaft?!  (Gelesen 2978 mal)

jo2105

  • Beiträge: 58
    • Profil anzeigen
Gespeichert
« 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.

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 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.
Dieser Text wird unter jedem Beitrag angezeigt.

jo2105

  • Beiträge: 58
    • Profil anzeigen
Gespeichert
« Antwort #2 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?

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 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)
Dieser Text wird unter jedem Beitrag angezeigt.

jo2105

  • Beiträge: 58
    • Profil anzeigen
Gespeichert
« Antwort #4 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.

jo2105

  • Beiträge: 58
    • Profil anzeigen
Gespeichert
« Antwort #5 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.  :-)

 

Einloggen