Beste svaret
C har mange formatspesifikatorer. Man eksisterer åpenbart for hver type, men utover det eksisterer andre slik at en programmerer kan vise en variabel av en bestemt type i et par forskjellige representasjoner. For eksempel vil \% d skrive ut et heltall. Men det samme heltallet kan også vises i heksadesimal ved å bruke \% x. Likevel finner du en liste over alle de originale C-formatsspesifikatorene her: Liste over alle formatspesifikatorer i C-programmering – Codeforwin
Imidlertid anbefaler jeg at du tar en mer moderne tilnærming til å skrive C-koden din som har å gjøre med erklære variabler og vise dem på riktig måte. Det vil si å bruke definisjoner gitt av
Kilde: Slik C (fra og med 2016)
-
int8\_t
,int16\_t
,int32\_t
,int64\_t
– signerte heltall -
uint8\_t
,uint16\_t
,uint32\_t
,uint64\_t
-unsignerte heltall -
float
– standard 32-bit flytende punkt -
double
– standard 64-biters flytpunkt -
intptr\_t, uintptr\_t, ptrdiff\_t
Det siste punktet inneholder typer du kan bruke til pekere aritmetikk.
Nå gitt slike typer er den riktige måten å vise dem på som følger:
-
size\_t
–\%zu
-
ssize\_t
–\%zd
-
ptrdiff\_t
–\%td
- rå pointe r-verdi –
\%p
(skriver ut hex i moderne kompilatorer; kast pekeren til(void *)
først) -
int64\_t
–"\%" PRId64
-
uint64\_t
–"\%" PRIu64
64-bitstyper skal bare skrives ut medPRI[udixXo]64
stilmakroer. Hvorfor? På noen plattformer er en 64-biters verdilong
og på andre er den «salong long
. Disse makroene gir riktig underliggende formatspesifikasjon på tvers plattformer. Det er faktisk umulig å spesifisere en riktig streng på tvers av plattformer uten disse formatmakroene, fordi typene skifter ut under deg (og husk at det ikke er trygt eller logisk å kaste verdier før utskrift). -
intptr\_t
–"\%" PRIdPTR
-
uintptr\_t
–"\%" PRIuPTR
-
intmax\_t
–"\%" PRIdMAX
-
uintmax\_t
–"\%" PRIuMAX
Et eksempel på å skrive ut en av disse typene:
printf("Local number: \%" PRIdPTR "\n\n", someIntPtr);
Merk at PRIdPTR er utenfor sitatene, men rett etter prosenttegnet. Litt irriterende syntaktisk faktisk.
Uansett håper jeg dette svarer på det meste du var loo konge for. Informasjonen gitt om bruk av C på en mer moderne måte angående datatyper og visning av dem via spesifikke formatformater, kom fra et flott dokument. Jeg foreslår at du leser Slik C (fra og med 2016) .
Du må heller ikke glemme at du kan slå opp formatspesifikatorer og alle ting printf () relatert på mansidene. Hvis du bruker et UNIX- eller UNIX-lignende system, er det bare å åpne skallet ditt og
bash$ man printf
Også google er din venn …; -)
Svar
Formatspesifikatorer starter med en prosentandel \% operatør og etterfulgt av et spesialtegn for å identifisere typen data.
Det er for det meste 6 typer formatspesifikatorer som er tilgjengelig i C.
Liste over formatspesifikatorer i C
Heltalsformatspesifikator\% d
\% d formatspesifikator er implementert for å representere heltallverdier. Dette brukes med printf () -funksjonen for å skrive ut heltall som er lagret i variabelen.
Syntaks:
printf("\%d",
Spesifikator for flytformat\% f
\% f format spesifiser er implementert for å representere brøkverdier. Dette implementeres innen printf () -funksjonen for utskrift av brøk- eller flytverdien som er lagret i variabelen. Når du trenger å skrive ut brøk- eller flytende data, må du bruke formatet \% f .
Syntaks:
printf("\%f",
Character Format Specifier \% c
\% c -formatspesifikatoren er implementert for å representere tegn. Dette brukes med funksjonen printf () for å skrive ut tegnet som er lagret i en variabel. Når du vil skrive ut tegndata, bør du ta i bruk formatspesifikatoren \% c .
Syntaks:
printf("\%c",
Spesifikator for strengformat\% s
\% s format spesifisering er implementert for å representere strenger. Dette brukes i printf () -funksjonen for å skrive ut en streng som er lagret i tegnmatrixvariabelen. Når du må skrive ut en streng, bør du implementere formatet \% s .
Syntaks:
printf("\%s",
Usignert heltalsformatspesifikator\% u
\% u formatspesifikator er implementert for å hente verdier fra adressen til en variabel som har usignert desimal heltall lagret i minnet. Dette brukes innen printf () -funksjonen for å skrive ut den usignerte heltallvariabelen.
Syntaks:
printf("\%u",
Long Int Format Specifier\% ld
\% ld formatspesifikator er implementert for å representere lange heltallverdier. Dette implementeres med funksjonen printf () for utskrift av det lange heltallverdien som er lagret i variabelen.
Syntaks:
printf("\%ld",