Preprocessor frage ARM<->Xmega

OP #5244254
Lesenswert?
• ▲
▼
Hi
versteht einer warum ich hier 2 verschiedene Resultate kriege?
Jeweils der IAR Compiler für XMEGA und Stm32F0 ARM
es geht um folgende Zuweisung:

volatile uint32_t Temp = (u32)((357.796/ 40ul) *16777216ul);

Auf Xmega16 ist Temp = 0x08F1E4F0
Auf STM32F0 ist Temp = 0x08F1E4F7
???????
#5244271
Lesenswert?
• ▲
▼
Habs mal kurz ausprobiert und wie vermutet bekomme ich Deine beiden 
ergebnisse mit nur einem Compiler.

XMEGA rechnet mit floats

#include <stdio.h>
#include <stdint.h>

void main(void)
{
double xd=357.796;
float xf=357.796;
uint32_t Temp1 = (uint32_t)((xd/ 40ul) *16777216ul);
uint32_t Temp2 = (uint32_t)((xf/ 40ul) *16777216ul);


printf("%x %x\n",Temp1,Temp2);
}
#5244502
Lesenswert?
• ▲
▼
Rolf M. schrieb:
> A. K. schrieb:
>> Martin B. schrieb:
>>> Aber eigentlich sollte der XMEGA Preprocessor ja in double rechnen.
>>
>> Daumenregel: Zu 99.9% ist die Aussage falsch, dass der Präprozessor
>> irgendwas berechnet.
>
> Wenn es um Gleitkomma geht, ist die Aussage zu 100% falsch.

Mensch, wie kann ich das nur wieder gut machen? Hatte es schon 
zugegeben. Hoffentlich verzeiht ihr mir.

Der Praeprocessor ist unschuldig.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.