чому% d означає ціле число?


78

Я знаю, що це не звучить продуктивно, але я шукаю спосіб запам'ятати всі коди форматування printfдзвінків. %s, %p, %fВсе очевидно, але я не можу зрозуміти , звідки %dприходить. Це %iвже щось інше?


21
Моя найкраща здогадка - десяткова
Хуан Мендес,

Так, однак, це свого роду іронічне +1, цікаве питання.
Даніель

Хоча це не справжнє питання програмування, і я схильний їх закривати :)
Хуан Мендес,

9
"d" означає "Чи означає ціле число". Досить просто.
самотній човен

Відповіді:


98

Це означає " десятковий " (основа 10), а не "ціле число". Ви можете використовувати %xдля друку шістнадцятковою (основа 16), а %oдля друку восьмеричною (основа 8). Ціле число може бути в будь-якій з цих основ.

У printf(), ви можете використовувати %iяк синонім %d, якщо ви віддаєте перевагу вказувати "ціле число" замість "десяткове", але, %dяк правило, переважно, оскільки це більш конкретно.

При введенні, використовуючи scanf(), ви можете використовувати використовувати як, так %iі %dтакож. %iозначає аналізувати його як ціле число в будь-якій основі (вісімковій, шістнадцятковій чи десятковій, як позначено а 0або 0xпрефіксом), тоді як %dозначає аналізувати його як ціле десяткове число.

Ось приклад усіх їх у дії:

Отже, ви повинні використовувати лише %iякщо ви хочете, щоб вхідна база залежала від префікса; якщо вхід база повинна бути фіксованою, ви повинні використовувати %d, %xабо %o. Зокрема, той факт, що ведучий 0переводить вас у вісімковий режим, може вас наздогнати.


тоді справжнє питання "чому Java називає цілі числа" int ", коли довгий і короткий, і байт ... також є
ints

8

http://en.wikipedia.org/wiki/Printf_format_string, здається, каже, що це для десяткової, як я вже здогадався

d,i

int як підписане десяткове число. '% d' і '% i' є синонімами виводу, але відрізняються при використанні із scanf () для введення (використання% i буде інтерпретувати число як шістнадцяткове, якщо перед ним 0x, і восьмеричне, якщо перед ним 0).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.