Hallo an alle, ich erstelle gerade ein Programm für mein Atmel AT89C51CC03 µC in Keil µVision3. Nun meine Frage: Ich verwende einige int Variablen. Da diese Variablen aber nur max. den Wert 100 annehmen können (keine Kommazahlen), würde ich gerne die Variablen anstatt in int in char initialisiereun (beides ist unsigned)um Platz zu sparen. Unsigne int Bereich von 0 bis 4294967295. Unsigned char Bereich von 0 bis 255. Kann ich das ohne weiteres so realisieren oder muss ich etwas beachten? Ich habe auf einer Seite gelsen, das char nicht verwendet werden sollte, da es je nach System zu unerklärbaren Fehlern kommen kann. Quelle: http://pronix.linuxdelta.de/C/standard_C/c_programmierung_8_2.shtml Gruss und schönes WE Sascha
> Ich habe auf einer Seite gelsen, das char nicht verwendet werden sollte,
da es je nach System zu unerklärbaren Fehlern kommen kann.
Schmarrn. Man sollte nur wissen wie die Daten während deren
Interpretation in andere Datentypen umgewandelt werden. Das kann in der
Tat heikel werden, allerdings stellt sich die gleiche Problematik, wenn
man gemischt mit long int und short int arbeitet. Ein Kommentar kann
hier auch nach Jahren noch Wunder wirken, besonders an den pfiffigen
Stellen.
Gerade in Mikrocontrollern ist nun mal Platz sparen oberstes Gebot und
das fängt genau hier an. Eine meiner ersten Zeilen im Code lautet gerne
einmal:
typedef unsigned char byte;
aber das ist Geschmackssache/Gewohnheit.
Char ist in der Tat etwas unglücklich, weils mal mit Vorzeichen, mal ohne daherkommt. Besser ists, für Zahlen und Rechnerei die Typen aus stdint.h zu benutzen (z.B. uint8_t für ein Byte).
Oder einfach immer explizit "unsigned char" oder "signed char" verwenden.
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.