14.2.8 Integer Conversions
This section describes the options for the ‘%d’, ‘%i’,
‘%o’, ‘%u’, ‘%x’, and ‘%X’ conversion
specifications.  These conversions print integers in various formats.
   
The ‘%d’ and ‘%i’ conversion specifications both print an
numeric argument as a signed decimal number; while ‘%o’,
‘%u’, and ‘%x’ print the argument as an unsigned octal,
decimal, or hexadecimal number (respectively).  The ‘%X’ conversion
specification is just like ‘%x’ except that it uses the characters
‘ABCDEF’ as digits instead of ‘abcdef’.
   
The following flags are meaningful:
     
- ‘-’
- Left-justify the result in the field (instead of the normal
right-justification).
     
 
- ‘+’
- For the signed ‘%d’ and ‘%i’ conversions, print a
plus sign if the value is positive.
     
 
- ‘ ’
- For the signed ‘%d’ and ‘%i’ conversions, if the result
doesn't start with a plus or minus sign, prefix it with a space
character instead.  Since the ‘+’ flag ensures that the result
includes a sign, this flag is ignored if you supply both of them.
     
 
- ‘#’
- For the ‘%o’ conversion, this forces the leading digit to be
‘0’, as if by increasing the precision.  For ‘%x’ or
‘%X’, this prefixes a leading ‘0x’ or ‘0X’ (respectively)
to the result.  This doesn't do anything useful for the ‘%d’,
‘%i’, or ‘%u’ conversions.
     
 
- ‘0’
- Pad the field with zeros instead of spaces.  The zeros are placed after
any indication of sign or base.  This flag is ignored if the ‘-’
flag is also specified, or if a precision is specified. 
If a precision is supplied, it specifies the minimum number of digits to
appear; leading zeros are produced if necessary.  If you don't specify a
precision, the number is printed with as many digits as it needs.  If
you convert a value of zero with an explicit precision of zero, then no
characters at all are produced.