limits.h

Libreria standard del C++
Libreria standard del C

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 definiteModifica

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 1Modifica

#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 2Modifica

#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 correlateModifica

Altri progettiModifica

Collegamenti esterniModifica

  • (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
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica