stdint.h är C- standardbibliotekets rubrikfil som introduceras av C99-standarden . Rubrikfilen deklarerar flera heltalstyper och makron . [ett]
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.
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