C programming question (beginner)

AI Thread Summary
The printf statement printf("%c",'\x4d') outputs the character 'M' because '\x4d' represents the hexadecimal value for the ASCII code 77. This hexadecimal notation is a convenient way to express binary values, which are used to encode all ASCII characters. The discussion clarifies that hexadecimal values are converted by the compiler into their corresponding byte representation. The user also explores whether using '\d77' would yield the same result, realizing it does not. Understanding hexadecimal notation is crucial for interpreting such outputs in C programming.
Math Is Hard
Staff Emeritus
Science Advisor
Gold Member
Messages
4,650
Reaction score
39
Here's a question I am working on for a c programming assignment.

If the following printf statement was part of a complete program, what would it print?

printf("%c",'\x4d');

Now, I know this prints M because I ran it, and I know the output is a single character because %c is a single character conversion spec. But I don't understand what value '\x4d' is returning. Is it just producing the character M and if so why?

Thanks for your help!
 
Physics news on Phys.org
'\x4d' simply produces the character which has the ASCII code 4D (or 77 in decimal). It happens to be M.
 
the \xhh form, where hh are two hex digits, is interpreted by the compiler into the actual byte hh.

- Warren
 
ahhh.. I wondered if it might be ASCII.
Thanks, Muzza, you're a peach!
 
Come again, Warren..? So I am dealing with a hex #?
 
Math Is Hard said:
Come again, Warren..? So I am dealing with a hex #?
All ASCII characters are encoded as a binary number using eight binary digits. Out of conveniance, it is easier to write the equivalent hexadecimal number rather than the binary. It's just maths.
 
OK, I think I get it. I have forgotten hexadecimal notation and had to punch it in a calculator for hex to base 10 translation.

If i had used '\d77' would I have gotten the same result?
 
hmm.. I guess not. I just tried it.
 
Back
Top