Stdint.h

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 10 juni 2018; kontroller kräver 13 redigeringar .

stdint.h  är C- standardbibliotekets rubrikfil som introduceras av C99-standarden . Rubrikfilen deklarerar flera heltalstyper och makron . [ett]

Typer

Rubrikfilen deklarerar heltalstyper som har en given storlek, har en given minimistorlek och är de snabbaste att använda. [1] Utöver dessa deklarerar standarden makron som anger storleken på dessa typer. Plattformen måste stödja minst ett antal heltalstyper av givna storlekar:

Sorts Lite djup Värdeuppsättning
int_minst8_t minst 8 bitar [-128;127]
int_minst16_t minst 16 bitar [-32768; 32767]
int_least32_t minst 32 bitar [-2147483648; 2147483647]
int_least64_t minst 64 bitar [-(2^63); 2^63 - 1]
uint_least8_t minst 8 bitar [0; 255]
uint_least16_t minst 16 bitar [0; 65535]
uint_least32_t minst 32 bitar [0; 4294967295]
uint_least64_t minst 64 bitar [0; 2^64 - 1]
int_fast8_t minst 8 bitar [-128; 127]
int_fast16_t minst 16 bitar [-32768; 32767]
int_fast32_t minst 32 bitar [-2147483648; 2147483647]
int_fast64_t minst 64 bitar [-(2^63); 2^63 - 1]
uint_fast8_t minst 8 bitar [0; 255]
uint_fast16_t minst 16 bitar [0; 65535]
uint_fast32_t minst 32 bitar [0; 4294967295]
uint_fast64_t minst 64 bitar [0; 2^64 - 1]

Typer med exakt bredd.

Alla system kan inte stödja alla dessa typer.

Sorts Beskrivning
int8_t 8-bitars signerad
int16_t 16-bitars signerad
int32_t 32-bitars signerad
int64_t 64-bitars signerad
uint8_t 8-bitars osignerad
uint16_t 16-bitars osignerad
uint32_t 32-bitars osignerad
uint64_t 64-bitars osignerad

De givna typerna är exakt 8, 16, 32 respektive 64 bitar breda. [1] Prefixet ubetyder att denna typ är osignerad och innehåller heltal från minst noll till inklusive. Således måste typen existera och innehålla siffror från noll till och med 255. uint_least8_t

Plattformen kan stödja pekare till signerade och osignerade heltalstyper: intptr_toch uintptr_t. [1] Plattformen krävs enligt C99-standarden för att stödja följande typer: intmax_t, uintmax_t, som kan representera maximala heltalsvärden.

Makron

Rubrikfilen deklarerar uppsättningar av makron som innehåller lägsta och maximala värden för heltalstyper. [1] För att få ett namn som representerar det lägsta eller högsta värdet för en given typ, ta typnamnet, ersätt _t med _MIN eller _MAX och konvertera alla tecken till versaler. Till exempel är det minsta värdet för en int32_t INT32_MIN och det största för en uint_fast16_t är UINT_FAST16_MAX.

Makro Menande
INT x_MIN _
INT x_MAX _
UINT x _MAX
INT_MINST x _MIN
INT_MINST x _MAX
UINT_LEAST x _MAX
INT_FAST x _MIN
INT_FAST x _MAX
UINT_FAST x _MAX
INTPTR_MIN INT x _MIN, plattformsberoende
INTPTR_MAX INT x _MAX, plattformsberoende
UINTPTR_MAX UINT x _MAX, plattformsberoende
INTMAX_MIN
INTMAX_MAX
UINTMAX_MAX
PTRDIFF_MIN INTPTR_MIN
PTRDIFF_MAX INTPTR_MAX
SIZE_MAX [2] UINTPTR_MAX

Standarden definierar också storleken på sig_atomic_t- typer , som kan innehålla värden på antingen [-128; 127], eller [0; 255]. Typen wchar_thar samma restriktioner, bara de är minimala. Typen wint_t, om den definieras, måste innehålla åtminstone antingen värdena [-32768; 32767], eller [0; 65535].

Makron , , måste expandera till heltalskonstantuttryck med värdevärde och dimension INT_LEAST x _T respektive . Till exempel, på en 64-bitars dator måste uttrycket UINT64_C(123) konverteras till en konstant . [ett]INTx_C(value)INTMAX_C(value)UINTMAX_C(value)intmax_tuintmax_t123ULL

Anteckningar

  1. 1 2 3 4 5 6 ISO/IEC 9899:1999 . Hämtad 5 augusti 2011. Arkiverad från originalet 22 augusti 2011.
  2. Typstorleksize_t