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
Bei einem vernünftigen Compiler ein Meckerer in Zeile 3. Darüber hinaus stehen die Chancen bei vielen Prozessoren gut, dass x = 1 ist.
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?
"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"
Du hast einen Rechner, vermutlich mit Windows. Installiere "mingw" und finde es selber raus. Grüsse, René
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?
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.