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
> Welcher Wert kommt in a?
254. Bei Gleitkomma ist das was anderes.
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.