Bibliothèque C - <limits.h>

le limits.hl'en-tête détermine diverses propriétés des différents types de variables. Les macros définies dans cet en-tête limitent les valeurs de divers types de variables comme char, int et long.

Ces limites spécifient qu'une variable ne peut stocker aucune valeur au-delà de ces limites, par exemple un caractère non signé peut stocker jusqu'à une valeur maximale de 255.

Macros de bibliothèque

Les valeurs suivantes sont spécifiques à l'implémentation et définies avec la directive #define, mais ces valeurs ne peuvent pas être inférieures à ce qui est donné ici.

Macro Valeur La description
CHAR_BIT 8 Définit le nombre de bits dans un octet.
SCHAR_MIN -128 Définit la valeur minimale d'un caractère signé.
SCHAR_MAX +127 Définit la valeur maximale d'un caractère signé.
UCHAR_MAX 255 Définit la valeur maximale d'un caractère non signé.
CHAR_MIN -128 Définit la valeur minimale du type char et sa valeur sera égale à SCHAR_MIN si char représente des valeurs négatives, sinon zéro.
CHAR_MAX +127 Définit la valeur du type char et sa valeur sera égale à SCHAR_MAX si char représente des valeurs négatives, sinon UCHAR_MAX.
MB_LEN_MAX 16 Définit le nombre maximal d'octets dans un caractère multi-octets.
SHRT_MIN -32768 Définit la valeur minimale pour un int court.
SHRT_MAX +32767 Définit la valeur maximale pour un int court.
USHRT_MAX 65535 Définit la valeur maximale d'un int court non signé.
INT_MIN -2147483648 Définit la valeur minimale d'un int.
INT_MAX +2147483647 Définit la valeur maximale d'un int.
UINT_MAX 4294967295 Définit la valeur maximale d'un int non signé.
LONG_MIN -9223372036854775808 Définit la valeur minimale d'un long int.
LONG_MAX +9223372036854775807 Définit la valeur maximale pour un long int.
ULONG_MAX 18446744073709551615 Définit la valeur maximale d'un long int non signé.

Exemple

L'exemple suivant montre l'utilisation de quelques-unes des constantes définies dans limits.h fichier.

#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);
}

Compilons et exécutons le programme ci-dessus qui produira le résultat suivant -

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