logo

Forskjellen mellom %d og %i formatspesifikasjoner i C-språk

En formatspesifikasjoner er et spesialtegn eller en sekvens av tegn som brukes til å definere typen data som skal skrives ut på skjermen eller typen data som skal skannes fra standardinndata. En formatspesifikasjoner begynner med et '%'-tegn etterfulgt av sekvensen av tegn for forskjellige typer data.

Kort fortalt forteller den oss hvilken type data vi skal lagre og hvilke vi skal skrive ut. Formatspesifikasjoner brukes primært med funksjonene scanf() og printf().



armstrong nummer

For eksempel hvis vi ønsker å lese og skrive ut et heltall ved hjelp av scanf() og printf()-funksjoner, enten %i eller %d brukes, men det er en subtil forskjell på begge %Jeg og %d formatspesifikasjoner .

%d spesifiserer fortegnet desimal heltall mens %i spesifiserer heltall av ulike baser.

'%d' og '%i' oppfører seg på samme måte med printf()

Det er ingen forskjell mellom %i- og %d-formatspesifikasjonene når de brukes med printf.



Tenk på følgende eksempel.

C




java-strengformat



// 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;> }>

>

>

Produksjon

Value of num using %d is = 9 Value of num using %i is = 9>

%d og %i oppførsel er forskjellig med scanf()

%d antar base 10 mens %i automatisk oppdager basen.

avkorte og slette forskjellen

Derfor oppfører begge spesifikasjonene seg forskjellig når de brukes med en inngangsfunksjon. Så verdien av 012 vil være 10 med %i, men 12 med %d.

    %d tar en heltallsverdi som et fortegnet desimaltall, dvs. den tar negative verdier sammen med positive verdier, men verdiene bør være i desimal ellers vil den skrive ut søppelverdi.
    ( Merk : Hvis inngangen er i det oktale formatet som 012, vil %d ignorere 0 og ta inndata som 12).
    %i tar en heltallsverdi som en heltallsverdi med desimal, heksadesimal eller oktal type.
    For å angi en verdi i heksadesimalt format, må verdien angis ved å gå foran 0x og for å angi en verdi i verdi i oktalt format, må verdien angis ved å gå foran 0.

Tenk på følgende eksempel.

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;> }>

>

>

vlc for å laste ned youtube-videoer

Produksjon

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>

Forklaring

  • Desimalverdien av a som 12 er 12
  • Desimalverdien av b som 12(oktal) er 10
  • Desimalverdien av c som 12(heksadesimal) er 18