Forum: Compiler & IDEs 9 * 8650 richtig rechnen?


von tobiTob (Gast)


Lesenswert?

Hallo,

nun ich wollte 9 * 8650 rechen.
Das ganze wie folgt:

volatile uint32_t g_int32_tmp;

g_int32_tmp = 9 * 8560;

heraus kommt immer 11504 statt 77040

Sieht man sich die Hexwerte an sieht man

11504 als 0x12FC

und

77040 als 0x12FC0


Ich kann mir da kein Reim drauf machen :-(
Wie schreibt man es das auch wirklich das herauskommt was man vom 
Taschenrechner kennt? ;-)


Gruß Tobi

von Benedikt K. (benedikt)


Lesenswert?

Der Compiler rechnet nur mit 16bit, daher gibt es einen Überlauf.
Du musst auf long casten:
g_int32_tmp = (uint32_t)9 * 8560;

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

9L  8560 oder 9  8560L geht auch.

von tobiTob (Gast)


Lesenswert?

Dank Euch!

Da wäre ichnicht drauf gekommen, nun hat man auch das einmal gesehen, 
nun muß man sich das nur merken und wenn es wieder mal nicht will, 
wissen was zu tun ist!

;-D

MfG Tobi...

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
Noch kein Account? Hier anmelden.