mikrocontroller.net

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


Autor: Sascha K. (quad2000)
Datum:

Bewertung
0 lesenswert
nicht 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_program...

Gruss und schönes WE Sascha

Autor: Platy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder einfach immer explizit "unsigned char" oder "signed char" 
verwenden.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.