Integer Conversions Next: Previous: Table of Output Conversions Up: C-Style I/O Functions



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.