Что является различием между спецификаторами преобразования %i и %d в отформатированных функциях IO (*printf / *scanf)

Между чем различие %d и %i при использовании в качестве спецификаторов формата в printf?

193
задан Sourav Ghosh 20 August 2017 в 21:26
поделиться

3 ответа

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.

265
ответ дан 23 November 2019 в 05:27
поделиться

В printf ничего нет - это синонимы.

5
ответ дан 23 November 2019 в 05:27
поделиться

Они идентичны для printf , но отличаются для scanf . Для printf оба % d и % i обозначают десятичное целое число со знаком. Для scanf , % d и % i также означает целое число со знаком, но % i интерпретирует ввод как шестнадцатеричное число, если ему предшествует 0x и восьмеричное, если ему предшествует 0 , в противном случае интерпретируется ввод как десятичный.

67
ответ дан 23 November 2019 в 05:27
поделиться