Специфікатор формату — це спеціальний символ або послідовність символів, які використовуються для визначення типу даних, які друкуються на екрані, або типу даних, які скануються зі стандартного введення. Специфікатор формату починається із символу «%», за яким слідує послідовність символів для різних типів даних.
Коротше кажучи, він повідомляє нам, який тип даних зберігати, а які друкувати. Специфікатори формату в основному використовуються з функціями scanf() і printf().
Наприклад, якщо ми хочемо прочитати та надрукувати ціле число за допомогою scanf() і функції printf(), використовується або %i, або %d, але в обох є тонка різниця %i і %d специфікатор формату .
%d визначає десяткове ціле число зі знаком, тоді як %i визначає ціле число з різними основами.
«%d» і «%i» поводяться подібно з printf()
Немає різниці між специфікаторами формату %i та %d при використанні з printf.
Розглянемо наступний приклад.
C
з'єднання та типи з'єднань
// C program to demonstrate> // the behavior of %i and %d> // with printf statement> #include> int> main()> {> > int> num = 9;> > // print value using %d> > printf> (> 'Value of num using %%d is = %d
'> , num);> > // print value using %i> > printf> (> 'Value of num using %%i is = %i
'> , num);> > return> 0;> }> |
>
arraylist відсортований java
>Вихід
Value of num using %d is = 9 Value of num using %i is = 9>
Поведінка %d і %i відрізняється від scanf()
%d передбачає базу 10, тоді як %i автоматично визначає основу.
wumpus світ
Тому обидва специфікатори поводяться по-різному, коли вони використовуються з функцією введення. Отже, значення 012 буде 10 з %i, але 12 з %d.
- %d приймає ціле число як десяткове ціле число зі знаком, тобто приймає від’ємні значення разом із додатними, але значення мають бути десятковими, інакше буде надруковано сміттєве значення.
( Примітка : Якщо вхідні дані є у вісімковому форматі, як-от 012, тоді %d ігноруватиме 0 і прийматиме вхідні дані як 12).
%i приймає ціле значення як ціле число з десятковим, шістнадцятковим або вісімковим типом.
Щоб ввести значення в шістнадцятковому форматі, значення має передувати 0x, а щоб ввести значення у вісімковому форматі, значення має передувати 0.
Розглянемо наступний приклад.
C
// C program to demonstrate the difference> // between %i and %d specifier> #include> int> main()> {> > int> a, b, c;> > printf> (> 'Enter value of a in decimal format:'> );> > scanf> (> '%d'> , &a);> > printf> (> 'Enter value of b in octal format: '> );> > scanf> (> '%i'> , &b);> > printf> (> 'Enter value of c in hexadecimal format: '> );> > scanf> (> '%i'> , &c);> > printf> (> 'a = %i, b = %i, c = %i'> , a, b, c);> > return> 0;> }> |
кероване машинне навчання
>
>
Вихід
Enter value of a in decimal format: 12 Enter value of b in octal format: 012 Enter value of c in hexadecimal format: 0x12 a = 12, b = 10, c = 18>
Пояснення
- Десяткове значення a як 12 дорівнює 12
- Десяткове значення b як 12 (вісімкове) дорівнює 10
- Десяткове значення c як 12 (шістнадцяткове) дорівнює 18