www.mikrocontroller.net

Forum: Compiler & IDEs int nach 2* char umwandeln


Autor: Der Techniker (_techniker_)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Ich habe da mal eine Frage, zum umwandeln von int zu char.

Ich hatte fälschlicherweise
HiChar = (unsigned char) InputInteger >> 8;
LoChar = (unsigned char) InputIntger & 0xff;
geschrieben, was ja nicht funktioniert.

Warum ist hier das "(unsigned char)" falsch?

Meine Vermutung: Ich mach hierdurch vor der Umwandlung (>>8 bzw. &
0xff) das Integer schon zu einem Char...

Ist dies richtig?
(Dann würde ich den Fehler auch begreifen..)
:)

Danke!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Vermutung ist richtig.
Klammern helfen hier Wunder:

Du willst:

  (unsigned char) ( InputInteger >> 8 );

Du hast aber geschrieben

  ( (unsigned char) InputInteger ) >> 8;

Im Zweifelsfall verwende lieber Klammern. Die meisten
Programmierer kennen die Operator-Prioritäten nicht
auswendig oder zumindest nicht vollstaendig auswendig
(Ich auch nicht).
Punkt vor Strich ist noch gelauefig (und kann man auch
voraussetzen), aber bei den Restlichen ist es schon
schwieriger.

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.