Un especificador de format és un caràcter especial o una seqüència de caràcters utilitzats per definir el tipus de dades que s'imprimiran a la pantalla o el tipus de dades que s'escanejaran des de l'entrada estàndard. Un especificador de format comença amb un caràcter '%' seguit de la seqüència de caràcters per a diferents tipus de dades.
En resum, ens indica quin tipus de dades emmagatzemar i quines imprimir. Els especificadors de format s'utilitzen principalment amb les funcions scanf() i printf().
Per exemple, si volem llegir i imprimir un nombre enter utilitzant scanf() i printf(), s'utilitzen %i o %d però hi ha una diferència subtil en ambdues %i i %d especificador de format .
%d especifica el nombre sencer decimal amb signe mentre que %i especifica el nombre enter de diverses bases.
'%d' i '%i' es comporten de manera similar amb printf()
No hi ha cap diferència entre els especificadors de format %i i %d quan s'utilitzen amb printf.
Considereu l'exemple següent.
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;> }> |
>
>
la roda de desplaçament no funcionaSortida
Value of num using %d is = 9 Value of num using %i is = 9>
El comportament de %d i %i és diferent amb scanf()
%d assumeix la base 10 mentre que %i detecta automàticament la base.
Per tant, ambdós especificadors es comporten de manera diferent quan s'utilitzen amb una funció d'entrada. Per tant, el valor de 012 seria 10 amb %i però 12 amb %d.
- %d pren un valor sencer com a nombre sencer decimal amb signe, és a dir, pren valors negatius juntament amb valors positius, però els valors haurien d'estar en decimal, en cas contrari, imprimirà un valor d'escombraries.
( Nota : Si l'entrada està en format octal com 012, llavors %d ignorarà 0 i prendrà l'entrada com a 12).
%i pren un valor enter com a valor enter amb tipus decimal, hexadecimal o octal.
Per introduir un valor en format hexadecimal, el valor s'ha de proporcionar abans de 0x i per introduir un valor en format octal, el valor s'ha de proporcionar abans de 0.
Considereu l'exemple següent.
C
755 chmod
// 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;> }> |
>
>
Sortida
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>
Explicació
- El valor decimal d'a com a 12 és 12
- El valor decimal de b com a 12 (octal) és 10
- El valor decimal de c com a 12 (hexadecimal) és 18