What is the difference between %# and % in printf

  • Thread starter Thread starter transgalactic
  • Start date Start date
  • Tags Tags
    Difference
AI Thread Summary
The discussion clarifies the difference between the format specifiers %#x and %x in the printf function in C. The %#x specifier prepends "0x" to a non-zero hexadecimal number, while %x simply displays the number in hexadecimal without the prefix. In octal representation, %#o adds a "0" prefix, while %o does not. The addition of the "#" character serves to indicate an alternate format, which is useful for distinguishing between different numeral bases. Overall, the use of the "#" flag is not commonly utilized, as many programmers prefer to manually prepend the necessary prefixes when needed.
transgalactic
Messages
1,386
Reaction score
0
printf ("Some different radixes: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);

%x shows 100 in hexadecimal basis

64

but %#x makes some memory address out of it

0x64what does the addition of # ?
 
Technology news on Phys.org
http://en.wikipedia.org/wiki/printf

"#": Alternate form.

For 'g' and 'G', trailing zeros are not removed.

For 'f', 'F', 'e', 'E', 'g', 'G', the output always contains a decimal point.

For 'o', 'x', and 'X', a 0, 0x, and 0X, respectively, is prepended to non-zero numbers.
 
regarding this
"For 'o', 'x', and 'X', a 0, 0x, and 0X, respectively, is prepended to non-zero numbers."

X turns to hex basis and O to octal basis
i was told that when we add # it add 0X to the transformed basis number in hex basis
but in octal basis it adds 0
why??

"Used with o, x or X specifiers the value is preceeded with 0, 0x or 0X respectively for values different than zero."

for what values we have different added signs?

g is a small float number

the trail of zeros you mean
0.765000000 >>0.765

??
 
Last edited:
Prepending 0 -- like 0123 -- indeed causes a literal value to use octal basis.

Prepending 0x -- like 0x0123 -- causes a literal value to use hex basis.

As far as I know prepending x (x0123?) doesn't do anything. I could be wrong.

I assume the reason they prepend 0 in octal and 0x in hex is because in both cases they're trying to reproduce the string necessary in order to create a literal if you paste the value back into C directly.

I wouldn't worry too much about the %# badge, I don't think many people use it. I've personally actually never used it before in my life, when I want to prepend 0x I just, you know, prepend 0x...

I don't know exactly what they mean by "trailing zeroes". I'd suggest just trying it and seeing what happens if you're really curious.

for what values we have different added signs?
Don't understand the question
 
thanks i understand know
 
Thread 'Is this public key encryption?'
I've tried to intuit public key encryption but never quite managed. But this seems to wrap it up in a bow. This seems to be a very elegant way of transmitting a message publicly that only the sender and receiver can decipher. Is this how PKE works? No, it cant be. In the above case, the requester knows the target's "secret" key - because they have his ID, and therefore knows his birthdate.
Thread 'Project Documentation'
Trying to package up a small bank account manager project that I have been tempering on for a while. One that is certainly worth something to me. Although I have created methods to whip up quick documents with all fields and properties. I would like something better to reference in order to express the mechanical functions. It is unclear to me about any standardized format for code documentation that exists. I have tried object orientated diagrams with shapes to try and express the...

Similar threads

Replies
3
Views
2K
Replies
5
Views
3K
Replies
3
Views
1K
Replies
3
Views
1K
Replies
2
Views
2K
Replies
32
Views
2K
Replies
1
Views
4K
Back
Top