ed int16_t; ed = 1005; if (ed > 1000) { ed = 1000; } if (ed < 0) { ed = 0; } -> ergebnis -> 1000 ed = -10; if (ed > 1000) { ed = 1000; } if (ed < 0) { ed = 0; } -> ergebnis -> 0 ed = 65500; if (ed > 1000) { ed = 1000; } if (ed < 0) { ed = 0; } -> ergebnis -> 0 Wie kommt es zu dem ergebnis 0 beim dritten Versuch? Wie kann man das vermeiden?
Simon schrieb: > Wie kommt es zu dem ergebnis 0 beim dritten Versuch? > Wie kann man das vermeiden? Wenn du dir den Zahlenbereich überlegst, der in int16_t reinpaßt und dir dann überlegst was 65500 in einer int16_t variablen "wirklich" ist, dann kommst du selber drauf. Du hast sicher ein C Grundlagenbuch, da solltest du nochmal stöbern. Vorkauen is nich ;-)
http://de.wikipedia.org/wiki/Integer_(Datentyp)#Maximaler_Wertebereich_von_Integer int16_t ed = 65500 landet im negativen Bereich. Entweder nicht den Wert zuweisen oder einen passenden Datentypen benutzen
hab das Problem, ich habe es an eine funktion übergeben die es mit utoa umgewandelt hat. habs gegen itoa ausgetauscht, funzt nun, der wert war nicht 65... sondern -200
Wertebereich von deinem ed: −32.768 bis 32.767 da passt deine letze Zahl nischt rein. --> Datentyp vergrössern
Simon schrieb: > Wie kommt es zu dem ergebnis 0 beim dritten Versuch? Was ist der Wertebereich einens 16-Bit Signed Integers? > Wie kann man das vermeiden? Man verwendet passende Datentypen... :-/
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.