Specifikator formata je poseben znak ali zaporedje znakov, ki se uporablja za določanje vrste podatkov, ki se natisnejo na zaslon, ali vrste podatkov, ki se skenirajo iz standardnega vnosa. Specifikator formata se začne z znakom »%«, ki mu sledi zaporedje znakov za različne vrste podatkov.
Skratka, pove nam, katero vrsto podatkov shraniti in katere natisniti. Specifikatorji formata se primarno uporabljajo s funkcijama scanf() in printf().
Na primer, če želimo prebrati in natisniti celo število z uporabo scanf() in printf(), se uporablja %i ali %d, vendar je v obeh subtilna razlika %jaz in %d specifikator formata .
%d določa decimalno celo število s predznakom, medtem ko %i določa celo število različnih osnov.
»%d« in »%i« se obnašata podobno s printf()
Pri uporabi s printf ni razlike med specifikatorjema formata %i in %d.
Razmislite o naslednjem primeru.
kaj je objekt java
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;> }> |
>
>Izhod
Value of num using %d is = 9 Value of num using %i is = 9>
Vedenje %d in %i je drugačno s scanf()
%d predpostavi osnovo 10, medtem ko %i samodejno zazna osnovo.
Zato se oba specifikatorja obnašata drugače, ko ju uporabljamo z vhodno funkcijo. Torej bi bila vrednost 012 10 z %i, vendar 12 z %d.
- %d sprejme celoštevilsko vrednost kot decimalno celo število s predznakom, tj. sprejme negativne vrednosti skupaj s pozitivnimi vrednostmi, vendar morajo biti vrednosti decimalne, sicer bo natisnjena nepotrebna vrednost.
( Opomba : Če je vnos v osmiški obliki, kot je 012, bo %d prezrl 0 in sprejel vnos kot 12).
%i sprejme celoštevilsko vrednost kot celoštevilsko vrednost z decimalnim, šestnajstiškim ali osmiškim tipom.
Če želite vnesti vrednost v šestnajstiški obliki, morate vrednost vnesti tako, da je pred 0x, če želite vnesti vrednost v vrednosti v osmiški obliki, morate vrednost vnesti pred 0.
Razmislite o naslednjem primeru.
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;> }> |
>
do while zanka java
>
Izhod
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>
Pojasnilo
- Decimalna vrednost a kot 12 je 12
- Decimalna vrednost b kot 12 (osmiško) je 10
- Decimalna vrednost c kot 12 (šestnajstiška) je 18