what is the difference between %d and %i when used in printf function ?
+13
A:
These are identical for printf
but different for scanf
. For printf
, both %d
and %i
designate a signed decimal integer. For scanf
, %d
and %i
also means a signed integer but %i
inteprets the input as a hexadecimal number if preceded by 0x
and octal if preceded by 0
and otherwise interprets the input as decimal.
Jason
2009-12-12 13:53:20
Out of curiosity, is there a reason why you dropped my answer from being the selected one?
Jason
2009-12-12 14:03:54
+12
A:
They are the same when used for output, e.g. with printf, but different when used as input specifier e.g. with scanf, where %d scans an integer as a signed decimal number, but %i allows defaults to decimal but also allows hexadecimal (if preceded by "0x") and octal if preceded by "0".
So "033" would be 27 with %i but 33 with %d.
Dipstick
2009-12-12 13:58:07