Forum: PC-Programmierung int -> char -> hex


von durin (Gast)


Lesenswert?

Ich arbeite gerade an einer Testklausur und hab ne kurze Frage zu einem 
Beispielcode:

unsigned int y = 257;
unsigned char x;
x = y;
printf("x =%x",x);

was würde bei x rauskommen?

Eine kleine Erläuterung wäre auch sehr hilfreich.

Vielen Dank

von Amateur (Gast)


Lesenswert?

Bei einem vernünftigen Compiler ein Meckerer in Zeile 3.

Darüber hinaus stehen die Chancen bei vielen Prozessoren gut, dass x = 1 
ist.

von katastrophenheinz (Gast)


Lesenswert?

1) Welchen Wertebereich/Bitbreite hat ein unsigned char?
2) Welchen Wertebereich/Bitbreite hat ein unsigned int?
3) Was ist (unsigned int)257 in hex-Schreibweise ?
4) Was bleibt über, wenn man das auf einen unsigned char castet?

von Arc N. (arc)


Lesenswert?

"6.3.1.3 Signed and unsigned integers
1 When a value with integer type is converted to another integer type 
other than _Bool, if the value can be represented by the new type, it is 
unchanged.
2 Otherwise, if the new type is unsigned, the value is converted by 
repeatedly adding or subtracting one more than the maximum value that 
can be represented in the new type until the value is in the range of 
the new type.
3 Otherwise, the new type is signed and the value cannot be represented 
in it; either the result is implementation-defined or an 
implementation-defined signal is raised"

von Rene H. (Gast)


Lesenswert?

Du hast einen Rechner, vermutlich mit Windows.
Installiere "mingw" und finde es selber raus.

Grüsse,
René

von durin (Gast)


Lesenswert?

1) Welchen Wertebereich/Bitbreite hat ein unsigned char?

0 - 256 / 8 Bit
2) Welchen Wertebereich/Bitbreite hat ein unsigned int?

0 - (2^32)-1 / 32 Bit
3) Was ist (unsigned int)257 in hex-Schreibweise ?
101?

4) Was bleibt über, wenn man das auf einen unsigned char castet?

eine '1', erste oder letzte stelle vom hex?

von Rene H. (Gast)


Lesenswert?

Nö, 0..255

Grüsse,
René

PS: letzte

von katastrophenheinz (Gast)


Lesenswert?

durin schrieb:
> eine '1', erste oder letzte stelle vom hex?

Bis hierhin richtig. Die Antwort auf deine letzte Frage findest du 
weiter oben in diesem Thread.

von PittyJ (Gast)


Lesenswert?

Es gibt Prozessor-Architekturen (TI 28xx), bei denen ist auch unsigned 
char 16 Bit breit.
Auf dem Proezessor kommt also 257 heraus.

Wenn in einer Klausur solche Dinge gefragt werden, dann muss da auch 
definiert sein, wieviele Bits ein unsigned int und ein unsigned char 
hat.

Im C-Standard ist nicht festgelegt, dass char 8 Bit haben muss.

von PittyJ (Gast)


Lesenswert?

Korrektur: nicht 257 sondern 101, da ja die Ausgabe in Hex ist.

von dadada (Gast)


Lesenswert?

PittyJ schrieb:
> Im C-Standard ist nicht festgelegt, dass char 8 Bit haben muss.

Richtig. Es ist festgelegt, dass ein char mindestens 8 Bit haben muss.

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.