limits.h
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
[modifica | modifica wikitesto]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 perINT_MIN
eUINT_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_MAX
|
Valore massimo per char | +127 | ≥ +127
(se | |
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
[modifica | modifica wikitesto]#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
[modifica | modifica wikitesto]#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
[modifica | modifica wikitesto]Altri progetti
[modifica | modifica wikitesto]Collegamenti esterni
[modifica | modifica wikitesto]- (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