Špecifikátor formátu je špeciálny znak alebo postupnosť znakov používaná na definovanie typu údajov, ktoré sa majú vytlačiť na obrazovku, alebo typu údajov, ktoré sa majú naskenovať zo štandardného vstupu. Špecifikátor formátu začína znakom „%“, za ktorým nasleduje sekvencia znakov pre rôzne typy údajov.
V skratke nám hovorí, aký typ údajov máme ukladať a ktoré tlačiť. Špecifikátory formátu sa primárne používajú s funkciami scanf() a printf().
Napríklad, ak chceme čítať a tlačiť celé číslo pomocou scanf() a printf() sa používa buď %i alebo %d, ale v oboch je jemný rozdiel %i a %d špecifikátor formátu .
%d určuje desiatkové celé číslo so znamienkom, zatiaľ čo %i určuje celé číslo na rôznych základoch.
„%d“ a „%i“ sa správajú podobne s printf()
Pri použití s printf nie je žiadny rozdiel medzi špecifikátormi formátu %i a %d.
Zvážte nasledujúci príklad.
C
inicializovať zoznam python
// 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;> }> |
>
>Výkon
Value of num using %d is = 9 Value of num using %i is = 9>
Správanie %d a %i sa líši od funkcie scanf()
%d predpokladá základňu 10, kým %i auto detekuje základňu.
Preto sa oba špecifikátory správajú odlišne, keď sa používajú so vstupnou funkciou. Takže hodnota 012 by bola 10 s %i, ale 12 s %d.
triedenie vloženia
- %d berie celočíselnou hodnotu ako celé desiatkové číslo so znamienkom, t. j. naberá záporné hodnoty spolu s kladnými hodnotami, ale hodnoty by mali byť v desiatkovej sústave, inak sa vypíše zbytočná hodnota.
( Poznámka : Ak je vstup v osmičkovom formáte ako 012, potom %d bude ignorovať 0 a bude vstup považovať za 12).
%i berie celočíselnou hodnotu ako celočíselnú hodnotu s desiatkovým, hexadecimálnym alebo osmičkovým typom.
Ak chcete zadať hodnotu v hexadecimálnom formáte, hodnota by mala byť zadaná pred 0x a ak chcete zadať hodnotu v osmičkovom formáte, hodnota by mala byť uvedená pred nulou.
Zvážte nasledujúci príklad.
C
if-else java
// 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;> }> |
>
>
Výkon
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>
Vysvetlenie
- Desatinná hodnota a ako 12 je 12
- Desatinná hodnota b ako 12 (osmičková) je 10
- Desatinná hodnota c ako 12 (hexadecimálne) je 18