Biblioteca C - <limites.h>

o limits.hheader determina várias propriedades dos vários tipos de variáveis. As macros definidas neste cabeçalho limitam os valores de vários tipos de variáveis ​​como char, int e long.

Esses limites especificam que uma variável não pode armazenar nenhum valor além desses limites, por exemplo, um caractere sem sinal pode armazenar até um valor máximo de 255.

Macros de biblioteca

Os seguintes valores são específicos da implementação e definidos com a diretiva #define, mas esses valores não podem ser inferiores aos fornecidos aqui.

Macro Valor Descrição
CHAR_BIT 8 Define o número de bits em um byte.
SCHAR_MIN -128 Define o valor mínimo para um caractere assinado.
SCHAR_MAX +127 Define o valor máximo para um caractere assinado.
UCHAR_MAX 255 Define o valor máximo para um caractere não assinado.
CHAR_MIN -128 Define o valor mínimo para o tipo char e seu valor será igual a SCHAR_MIN se char representar valores negativos, caso contrário, zero.
CHAR_MAX +127 Define o valor do tipo char e seu valor será igual a SCHAR_MAX se char representar valores negativos, caso contrário, UCHAR_MAX.
MB_LEN_MAX 16 Define o número máximo de bytes em um caractere multibyte.
SHRT_MIN -32768 Define o valor mínimo para um int curto.
SHRT_MAX +32767 Define o valor máximo para um int curto.
USHRT_MAX 65535 Define o valor máximo para um int curto sem sinal.
INT_MIN -2147483648 Define o valor mínimo para um int.
INT_MAX +2147483647 Define o valor máximo para um int.
UINT_MAX 4294967295 Define o valor máximo para um int não assinado.
LONG_MIN -9223372036854775808 Define o valor mínimo para um inteiro longo.
LONG_MAX +9223372036854775807 Define o valor máximo para um inteiro longo.
ULONG_MAX 18446744073709551615 Define o valor máximo para um inteiro longo sem sinal.

Exemplo

O exemplo a seguir mostra o uso de algumas das constantes definidas em limits.h Arquivo.

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

Vamos compilar e executar o programa acima que produzirá o seguinte resultado -

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