mikrocontroller.net

Forum: Compiler & IDEs 9 * 8650 richtig rechnen?


Autor: tobiTob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
9L  8560 oder 9  8560L geht auch.

Autor: tobiTob (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.