limits.h è l'header file della libreria standard del linguaggio di programmazione C dove sono presenti le definizioni delle caratteristiche di tipi di dato comunemente utilizzati. I valori dipendono dall'implementazione, ma potrebbero essere più grandi rispetto ai valori base specificati in un'implementazione C conforme agli standard.
Lo standard C99 specifica anche il file di intestazione <stdint.h>
, che fornisce nomi e limiti per i tipi di dati interi indipendenti dalla piattaforma di dimensioni esplicite (ad esempio int32_t per un intero con segno a 32 bit).
Costanti definite
La colonna "valore minimo dell'intervallo" contiene i minimi valori possibili per una costante di questo tipo, come specificato nella standard. In particolare, i valori _MIN
sono i minimi valori rappresentabili nelle forme complemento a 1 (scarsamente utilizzato) e grandezza-segno. La maggior parte delle implementazioni avrà un intervallo più ampio per almeno alcuni di questi numeri, per esempio:
- Le implementazioni in complemento a 2 hanno
SCHAR_MIN
uguale a −128 (e allo stesso modo per tutti gli altri valori _MIN
).
- Le implementazioni a 32 bit settano
INT_MAX
al valore +2 147 483 647 (lo stesso per INT_MIN
e UINT_MAX
)
- Le implementazioni che supportano Unicode setteranno
MB_LEN_MAX
come minimo a 4.
- Molti DSP hanno
CHAR_BIT
uguale a 16 o più [1] [2].
Nome
|
Descrizione
|
Valore tipico
|
Valore minimo o massimo per lo standard ANSI
|
CHAR_BIT
|
Numero di bit in un byte
|
8
|
≥ +8
|
SCHAR_MIN
|
Valore minimo per signed char
|
−128
|
≤ −127
|
SCHAR_MAX
|
Valore massimo per signed char
|
+127
|
≥ +127
|
UCHAR_MAX
|
Valore massimo per unsigned char
|
+255
|
≥ +255
|
CHAR_MIN
|
Valore minimo per char
|
−128
|
≤ −127
(se char è rappresentato come un signed char ; altrimenti ≤ 0)
|
CHAR_MAX
|
Valore massimo per char
|
+127
|
≥ +127
(se char è rappresentato come un signed char ; altrimenti ≥ +255)
|
MB_LEN_MAX
|
Lunghezza massima in byte di un carattere multibyte per tutte le lingue
|
varia, di solito almeno 4
|
≥ +1
|
SHRT_MIN
|
Valore minimo per short int
|
−32 768
|
≤ −32 767
|
SHRT_MAX
|
Valore massimo per short int
|
+32 767
|
≥ +32 767
|
USHRT_MAX
|
Valore massimo per unsigned short int
|
+65 535
|
≥ +65 535
|
INT_MIN
|
Valore minimo per int
|
−2 147 483 648
|
≤ −32 767
|
INT_MAX
|
Valore massimo per int
|
+2 147 483 647
|
≥ +32 767
|
UINT_MAX
|
Valore massimo per unsigned int
|
+4 294 967 295
|
≥ +65 535
|
LONG_MIN
|
Valore minimo per long int
|
compilatore 32 bit
|
−2 147 483 648
|
≤ −2 147 483 647
|
compilatore 64 bit
|
−9 223 372 036 854 775 808
|
LONG_MAX
|
Valore massimo per long int
|
compilatore 32 bit
|
+2 147 483 647
|
≥ +2 147 483 647
|
compilatore 64 bit
|
+9 223 372 036 854 775 807
|
ULONG_MAX
|
Valore massimo per unsigned long int
|
compilatore 32 bit
|
+4 294 967 295
|
≥ +4 294 967 295
|
compilatore 64 bit
|
+18 446 744 073 709 551 615
|
LLONG_MIN
|
Valore minimo per long long int
|
−9 223 372 036 854 775 808
|
≤ −9 223 372 036 854 775 807
|
LLONG_MAX
|
Valore massimo per long long int
|
+9 223 372 036 854 775 807
|
≥ +9 223 372 036 854 775 807
|
ULLONG_MAX
|
Valore massimo per unsigned long long int
|
+18 446 744 073 709 551 615
|
≥ +18 446 744 073 709 551 615
|
Esempio 1
#include <stdio.h>
#include <limits.h>
int main(void)
{
if(CHAR_MAX == UCHAR_MAX) {
printf("Questa macchina utilizza di default il tipo unsigned char\n");
} else {
printf("Questa macchina utilizza di default il tipo signed char\n");
}
return 0;
}
Esempio 2
#include <limits.h>
#include <stdio.h>
int main(void)
{
printf("Il valore massimo di tipo int su questo sistema è %d\n", INT_MAX);
return 0;
}
Voci correlate
Altri progetti
Collegamenti esterni
- (EN) C numeric limits, su en.cppreference.com.
- (EN) C Guide--2.5 limits.h, su acm.uiuc.edu (archiviato dall'url originale il 12 dicembre 2008).
- (EN) Inquire: un programma per la generazione automatica di limits.h, il quale controlla anche che i valori nei limits.h già esistenti siano corretti