Gast
#364362
Hallo da draussen,
ich habe ein Programm, das sich verrechnet.
Ich will aus 5 ASII-Zeichen (Ziffern) eine int machen.
Bei den lower 4 digts klappt es, aber bei dem 10.000er digit
kommt es zu einem Rechenfehler. Hier die wesentlichen Programmzeilen:
uint8_t x ; // hier definiere ich ein ASCII - Zeichen
// jetzt wandle ich das ASCII-Zeichen in eine int
// und weil's die 5te Stelle der gesamten int ist, *10000
// und ausgeben...
// der gcc gibt eine Warnung: "int Format. anderer
// Typ Argument (Argument 2)
printf ( "x = %i \r\n ", ( ( x - 48 ) * 10000 ) ) ;
// das Ergebnis: ab x > 3 (genau ab 32.768, was ja 2^15
// ist) kommen falsche Ergebnisse der Berechnung.
Was mache ich falsch ?
Vielen Dank für Eure Mühe
Otto