Hallo, was ist der Vorteil, wenn ich uint8_t bzw int8_t statt int einsetze? Ist das nur ein geringerer Speicherplatzbedarf? Wie groß ist der von int? Oder gibt es noch andere Vorteile? Dank Euch!
int hat per Definition (ANSI-Norm) immer mindestens 16 Bit. Und es ist nicht nur der Speicherbedarf, sondern auch die Tatsache, dass ein 8-Bit-µC nur 8 Bit auf einmal verarbeiten kann. Jeder Zugriff auf größere Werte dauert erheblich länger, ist aufwändiger was den Code angeht (rumspielen mit Flags...) und auch nicht mehr atomar. Der Speicherbedarf spielt bei einem µC, der u.U. nur ein paar hundert Bytes (oder z.T. auch noch weniger) SRAM besitzt, ebenfalls eine große Rolle. Aus diesen Gründen nimmt man bei µCs eigentlich für Variablen immer nur so viele Bits wie nötig, um den gewünschten Zahlenbereich darstellen zu können. Wenn man eine Variable hat, die nur Werte von 0..100 annehmen kann, reicht ein char (bzw. uint8_t) völlig aus. Es erhöht die Performance und schont die Ressourcen.
...Ergänzung: Das oben gesagte bezieht sich natürlich auf 8-Bit-µCs. Bei einer 16- oder 32-Bit-CPU macht es dann keinen Unterschied mehr, ob man int oder char nimmt. Der ANSI-Standard definiert int als Typ, der die natürliche Breite der Maschine (also CPU) hat, allerdings eben mit der Einschränkung, dass int mindestens 16 Bit breit ist. Der ANSI-Standard ist nunmal nicht auf 8-Bit-CPUs zugeschnitten...
Hmm, das hätte ich schreiben sollen. Eingesetzt war der Atmega16, d.h. Deine zweite Antwort spricht genau das an, ein Geschwindigkeitsvorteil ist nicht zu erwarten, oder? Also nur der Ressourcenvorteil. Danke für die schnelle und kompetente Antwort!
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.