Anfänger - Char-Variable nach Double kopieren

Gast #3768966
Lesenswert?

Hallo liebes Forum,

ich habe eine Verständnisfrage. Warum funktioniert es nicht, wenn ich 
den Inhalt einer char-Variable einer double-Variable zuweise? 
Andersherum ist es mir klar, da der Wertebereich von Double größer ist.
1
unsigned char Var1;
2
double Var2;
3

4
Var1 = 50;
5

6
Var2 = Var1;

Var2 ist immer 1117519872 und nicht wie gewollt 50;
#3768994
Lesenswert?

Tja, dann ist die Anzeige falsch, oder du bedienst den Debugger nicht 
richtig.

Ganz allgemein wird hier gerne der Rat gegeben, die Grundlagen einer 
Programmiersprache zunächst mal auf einem PC zu lernen. Da sind die 
Werkzeuge sehr viel vollständiger und einfacher zu bedienen.

Oliver
#3769006
Lesenswert?

Ian schrieb:
> Ich debugge mit dem JTAGICEmkIII und dort wird mir dieser Wert
> angezeigt.

Wenn ich in den letzten Jahren etwas gelernt habe: Vertraue keinem 
Debugger. Verlass dich da nicht all zu sehr drauf. Vielleicht kannst du 
die 50 ja anders darstellen. Kannst sie Beispielsweise an einem PORT 
zuweisen und an diesen LED's anschliessen, dann müsste theoretisch 50 in 
Binär dargestellt werden.

Hatte bereits oft ähnliche Probleme. Wie gesagt, nicht zu stark auf die 
Dinger verlassen, sondern lieber alternative Prüfmethoden anwenden.
Moderator #3769030
Lesenswert?

1117519872 ist das als Integer-Zahl dargestellte Bitmuster der
32-Bit-Floatingpoint-Zahl 78.00000.

Kann es sein, dass Var1 nicht 50, sondern 78 ist?

Dann liegt es daran, dass der Debugger aus irgendeinem Grund den
Datentyp von Var2 fälschlicherweise als int32_t oder uint32_t annimmt.
M.W. wird im Atmel Studio hinter dem Zahlenwert auch der Typ angezeigt.
Daran kannst du erkennen, ob das Bitmuster der Variable als int32_t oder
als float/double interpretiert wird.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren