Wie wird ein Cast interpretiert?

OP #412007
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
#412010
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.

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.