Muotomäärittäjä on erikoismerkki tai merkkijono, jota käytetään määrittämään näytölle tulostettavan tiedon tyyppi tai vakiosyötteestä skannattavien tietojen tyyppi. Muotomäärittely alkaa %-merkillä, jota seuraa erityyppisten tietojen merkkijono.
Lyhyesti sanottuna se kertoo meille, minkä tyyppiset tiedot tallennetaan ja mitkä tulostetaan. Muotomäärityksiä käytetään pääasiassa scanf()- ja printf()-funktioiden kanssa.
Esimerkiksi jos haluamme lukea ja tulostaa kokonaisluvun käyttämällä scanf() ja printf()-funktioita, joko %i tai %d käytetään, mutta molemmissa on pieni ero %i ja %d muodon määrittäjä .
%d määrittää etumerkillisen desimaalin kokonaisluvun, kun taas %i määrittää eri kantalukujen kokonaisluvun.
'%d' ja '%i' toimivat samalla tavalla printf()
%i- ja %d-muotomääritteiden välillä ei ole eroa, kun niitä käytetään printf:n kanssa.
Harkitse seuraavaa esimerkkiä.
C
linkedlist java
// 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;> }> |
>
>Lähtö
Value of num using %d is = 9 Value of num using %i is = 9>
%d ja %i käyttäytyminen eroaa komennolla scanf()
%d olettaa kantaa 10, kun taas %i automaattisesti tunnistaa kannan.
Siksi molemmat määrittimet käyttäytyvät eri tavalla, kun niitä käytetään syöttöfunktion kanssa. Joten 012:n arvo olisi 10 %i:n kanssa, mutta 12 %d:n kanssa.
- %d ottaa kokonaisluvun etumerkittynä desimaalilukuna, eli se ottaa negatiiviset arvot positiivisten arvojen rinnalla, mutta arvojen tulee olla desimaalilukuina, muuten se tulostaa roskaarvon.
( Huomautus : Jos syöte on oktaalimuodossa, kuten 012, %d jättää huomioimatta 0:n ja ottaa syötteen 12).
%i ottaa kokonaisluvun arvon desimaali-, heksadesimaali- tai oktaalityypin kokonaislukuarvona.
Jos haluat syöttää arvon heksadesimaalimuodossa, arvo tulee antaa edeltävällä 0x:lla ja oktaalimuodossa olevan arvon syöttämiseksi edeltävällä 0:lla.
Harkitse seuraavaa esimerkkiä.
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;> }> |
>
>
Lähtö
nimi kaupunki Yhdysvalloissa
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>
Selitys
- A as 12:n desimaaliarvo on 12
- B:n desimaaliarvo 12:na (oktaali) on 10
- C:n desimaaliarvo 12:na (heksadesimaali) on 18