Forum: Mikrocontroller und Digitale Elektronik Allgemeines zu Char vs. µC Programmierung


von Sascha K. (quad2000)


Lesenswert?

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

von Platy (Gast)


Lesenswert?

> 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.

von Sven P. (Gast)


Lesenswert?

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).

von Stefan E. (sternst)


Lesenswert?

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
Noch kein Account? Hier anmelden.