En formatspecifikation är ett specialtecken eller en sekvens av tecken som används för att definiera vilken typ av data som ska skrivas ut på skärmen eller vilken typ av data som ska skannas från standardinmatning. En formatspecifikator börjar med ett '%'-tecken följt av teckensekvensen för olika typer av data.
Kort sagt, det talar om för oss vilken typ av data som ska lagras och vilken som ska skrivas ut. Formatspecifikationer används främst med funktionerna scanf() och printf().
Till exempel, Om vi vill läsa och skriva ut ett heltal med hjälp av scanf() och printf()-funktionerna, antingen %i eller %d används men det finns en subtil skillnad i båda %i och %d formatspecifikation .
%d anger decimalt heltal med tecken medan %i anger heltal av olika baser.
'%d' och '%i' beter sig på samma sätt med printf()
Det finns ingen skillnad mellan %i och %d formatspecifikationerna när de används med printf.
Betrakta följande exempel.
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;> }> |
>
>Produktion
Value of num using %d is = 9 Value of num using %i is = 9>
%d och %i beteende skiljer sig med scanf()
%d antar bas 10 medan %i automatiskt upptäcker basen.
Därför beter sig båda specifikationerna olika när de används med en ingångsfunktion. Så värdet på 012 skulle vara 10 med %i men 12 med %d.
- %d tar ett heltal som ett decimalt heltal med tecken, dvs. det tar negativa värden tillsammans med positiva värden men värdena bör vara i decimaler annars kommer det att skriva ut skräpvärde.
( Notera : Om ingången är i det oktala formatet som 012 kommer %d att ignorera 0 och ta indata som 12).
%i tar ett heltalsvärde som ett heltalsvärde med decimal, hexadecimal eller oktal typ.
För att ange ett värde i hexadecimalt format ska värdet anges genom att föregå 0x och för att ange ett värde i ett oktalt format ska värdet anges genom att föregå 0.
Betrakta följande exempel.
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;> }> |
>
>
hur man skriver ut java
Produktion
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>
Förklaring
- Decimalvärdet för a som 12 är 12
- Decimalvärdet för b som 12(oktal) är 10
- Decimalvärdet för c som 12(hexadecimalt) är 18