int nach 2* char umwandeln

Gast #284930
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!
#284931
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

Eine eigene Frage? Dieser Thread ist über 20 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.