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.
Sollte der cast nicht so lauten? b = (uint8_t) a;
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.
OK, danke, das war's schon Merci bien Christian
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.