Forum: Compiler & IDEs int nach 2* char umwandeln


von Der T. (Gast)


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!

von Karl H. (kbuchegg)


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.

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.