mikrocontroller.net

Forum: Compiler & IDEs Wie wird ein Cast interpretiert?


Autor: Christian Wolf (clupus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es geht mir nur um die Frage wie in Cast interpretiert wird. Folgendes
Bsp:

int8_t a = -2;
uint8_t b;

b = (int8_t) a;

Was macht der da? Welcher Wert kommt in a? 2 (einfach Betrag von b)?
Oder 254 (die Zahl die der GCC intern verwendet)? Nimmt er also nur
hin, dass es 2 verschiedene Typen sind und macht sonst gar nix oder
macht er aus einer negativen Zahl eine mit unsigned "darstellbare"?

Ziel: Ich will eine int8_t in den EEPROM speichern, die avr-libc hat
aber nur eine Funktion für unsigned. Entweder kann ich das mit einem
Cast umgehen (Fehlermeldung beim Übersetzen) oder ich muss mir notfalls
eine eigene Routine schreiben; wäre aber mit Cast einfacher.

MfG
Christian

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

Bewertung
0 lesenswert
nicht lesenswert
> Welcher Wert kommt in a?

254.  Bei Gleitkomma ist das was anderes.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte der cast nicht so lauten?

  b = (uint8_t) a;

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In dem Fall ist mit dem Cast keine Typumwandlung verbunden, wie
es zb. bei einem cast von Floating Point nach Ganzzahl verbunden
wäre.
Der cast bewirkt in diesem Fall, dass das Bitmuster einfach
als uint8_t interpretiert wird. Egal was dann dabei tatsächlich
herauskommt. Im Grunde überschreibst du einfach nur für den
Compiler den Datentyp um ihn für die Zuweisung kompatibel
zu machen. An den tatsächlich beteiligten Bits ändert sich aber
nichts.

Autor: Christian Wolf (clupus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK, danke, das war's schon

Merci bien
Christian

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.