• C

printing bytes in C

I'm trying to verify the contents of an unsigned short variable in C, and printf is giving me unexpected output (this is on an Intel so it's little-endian):

unsigned short us = 52275;  // binary 1100 1100 0011 0011

printf("%x\n", *(char *)&us);  // gives me 33, as expected
printf("%x\n", *((char *)&us + 1));  // gives me ffffffcc

I would expect the second printf to produce cc, since the char * is incremented by 1 and then dereferenced.  Can anyone explain why I get what looks like an int instead of a char?
Who is Participating?
ZoppoConnect With a Mentor Commented:
Hi _psilentist_,

the problem is you cast the pointer to 'char' - using 'unsigned char' instead will lead to expected result ...

Hope that helps,

_psilentist_Author Commented:
Thanks for the prompt response!
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.