Libreria C - <limits.h>
Il limits.hheader determina varie proprietà dei vari tipi di variabili. Le macro definite in questa intestazione limitano i valori di vari tipi di variabili come char, int e long.
Questi limiti specificano che una variabile non può memorizzare alcun valore oltre questi limiti, ad esempio un carattere senza segno può memorizzare fino a un valore massimo di 255.
Macro di libreria
I seguenti valori sono specifici dell'implementazione e definiti con la direttiva #define, ma questi valori non possono essere inferiori a quelli forniti qui.
Macro | Valore | Descrizione |
---|---|---|
CHAR_BIT | 8 | Definisce il numero di bit in un byte. |
SCHAR_MIN | -128 | Definisce il valore minimo per un carattere con segno. |
SCHAR_MAX | +127 | Definisce il valore massimo per un carattere con segno. |
UCHAR_MAX | 255 | Definisce il valore massimo per un carattere senza segno. |
CHAR_MIN | -128 | Definisce il valore minimo per il tipo char e il suo valore sarà uguale a SCHAR_MIN se char rappresenta valori negativi, altrimenti zero. |
CHAR_MAX | +127 | Definisce il valore per il tipo char e il suo valore sarà uguale a SCHAR_MAX se char rappresenta valori negativi, altrimenti UCHAR_MAX. |
MB_LEN_MAX | 16 | Definisce il numero massimo di byte in un carattere multibyte. |
SHRT_MIN | -32768 | Definisce il valore minimo per un int breve. |
SHRT_MAX | +32767 | Definisce il valore massimo per un int breve. |
USHRT_MAX | 65535 | Definisce il valore massimo per un int breve senza segno. |
INT_MIN | -2147483648 | Definisce il valore minimo per un int. |
INT_MAX | +2147483647 | Definisce il valore massimo per un int. |
UINT_MAX | 4294967295 | Definisce il valore massimo per un int senza segno. |
LONG_MIN | -9223372036854775808 | Definisce il valore minimo per un int lungo. |
LONG_MAX | +9223372036854775807 | Definisce il valore massimo per un int lungo. |
ULONG_MAX | 18446744073709551615 | Definisce il valore massimo per un int lungo senza segno. |
Esempio
L'esempio seguente mostra l'utilizzo di alcune delle costanti definite in limits.h file.
#include <stdio.h>
#include <limits.h>
int main() {
printf("The number of bits in a byte %d\n", CHAR_BIT);
printf("The minimum value of SIGNED CHAR = %d\n", SCHAR_MIN);
printf("The maximum value of SIGNED CHAR = %d\n", SCHAR_MAX);
printf("The maximum value of UNSIGNED CHAR = %d\n", UCHAR_MAX);
printf("The minimum value of SHORT INT = %d\n", SHRT_MIN);
printf("The maximum value of SHORT INT = %d\n", SHRT_MAX);
printf("The minimum value of INT = %d\n", INT_MIN);
printf("The maximum value of INT = %d\n", INT_MAX);
printf("The minimum value of CHAR = %d\n", CHAR_MIN);
printf("The maximum value of CHAR = %d\n", CHAR_MAX);
printf("The minimum value of LONG = %ld\n", LONG_MIN);
printf("The maximum value of LONG = %ld\n", LONG_MAX);
return(0);
}
Compiliamo ed eseguiamo il programma sopra che produrrà il seguente risultato:
The number of bits in a byte 8
The minimum value of SIGNED CHAR = -128
The maximum value of SIGNED CHAR = 127
The maximum value of UNSIGNED CHAR = 255
The minimum value of SHORT INT = -32768
The maximum value of SHORT INT = 32767
The minimum value of INT = -2147483648
The maximum value of INT = 2147483647
The minimum value of CHAR = -128
The maximum value of CHAR = 127
The minimum value of LONG = -9223372036854775808
The maximum value of LONG = 9223372036854775807