Между чем различие %d
и %i
при использовании в качестве спецификаторов формата в printf
?
They are the same when used for output, e.g. with printf
.
However, these are different when used as input specifier e.g. with scanf
, where %d
scans an integer as a signed decimal number, but %i
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
.
Они идентичны для printf
, но отличаются для scanf
. Для printf
оба % d
и % i
обозначают десятичное целое число со знаком. Для scanf
, % d
и % i
также означает целое число со знаком, но % i
интерпретирует ввод как шестнадцатеричное число, если ему предшествует 0x
и восьмеричное, если ему предшествует 0
, в противном случае интерпретируется ввод как десятичный.