Espacios de nombres
Variantes

Límites numéricos

De cppreference.com
< c | types
Definido en el encabezado <stdint.h>
PTRDIFF_MIN
(C99)
valor mínimo del objeto de tipo ptrdiff_t
(constante de macro)
PTRDIFF_MAX
(C99)
valor máximo del objeto de tipo ptrdiff_t
(constante de macro)
SIZE_MAX
(C99)
valor máximo del objeto de tipo size_t
(constante de macro)
SIG_ATOMIC_MIN
(C99)
valor mínimo del objeto de tipo sig_atomic_t
(constante de macro)
SIG_ATOMIC_MAX
(C99)
valor máximo del objeto de tipo sig_atomic_t
(constante de macro)
WINT_MIN
(C99)
valor mínimo del objeto de tipo wint_t
(constante de macro)
WINT_MAX
(C99)
valor máximo del objeto de tipo wint_t
(constante de macro)
Definido en el encabezado <wchar.h>
WCHAR_MIN
(C99)
valor mínimo del objeto de tipo wchar_t
(constante de macro)
WCHAR_MAX
(C99)
valor máximo del objeto de tipo wchar_t
(constante de macro)

Ejemplo

#include <stdio.h>
#include <stdint.h>
#include <wchar.h>

int main(void)
{
    printf("PTRDIFF_MIN    = %td\n", PTRDIFF_MIN);
    printf("PTRDIFF_MAX    = %+td\n", PTRDIFF_MAX);
    printf("SIZE_MAX       = %zu\n", SIZE_MAX);
    printf("SIG_ATOMIC_MIN = %+jd\n",(intmax_t)SIG_ATOMIC_MIN);
    printf("SIG_ATOMIC_MAX = %+jd\n",(intmax_t)SIG_ATOMIC_MAX);
    printf("WCHAR_MIN      = %+jd\n",(intmax_t)WCHAR_MIN);
    printf("WCHAR_MAX      = %+jd\n",(intmax_t)WCHAR_MAX);
    printf("WINT_MIN       = %jd\n", (intmax_t)WINT_MIN);
    printf("WINT_MAX       = %jd\n", (intmax_t)WINT_MAX);
}

Posible salida:

PTRDIFF_MIN    = -9223372036854775808
PTRDIFF_MAX    = +9223372036854775807
SIZE_MAX       = 18446744073709551615
SIG_ATOMIC_MIN = -2147483648
SIG_ATOMIC_MAX = +2147483647
WCHAR_MIN      = -2147483648
WCHAR_MAX      = +2147483647
WINT_MIN       = 0
WINT_MAX       = 4294967295

Límites de los tipos enteros

Definido en el encabezado <limits.h>
CHAR_BIT
número de bits en un byte
(constante de macro)
MB_LEN_MAX
número máximo de bytes en un carácter multibyte
(constante de macro)
CHAR_MIN
valor mínimo de char
(constante de macro)
CHAR_MAX
valor máximo de char
(constante de macro)
SCHAR_MINSHRT_MININT_MINLONG_MINLLONG_MIN
(C99)
valor mínimo de signed char, short, int, long y long long respectivamente
(constante de macro)
SCHAR_MAXSHRT_MAXINT_MAXLONG_MAXLLONG_MAX
(C99)
valor máximo de signed char, short, int, long y long long respectivamente
(constante de macro)
UCHAR_MAXUSHRT_MAXUINT_MAXULONG_MAXULLONG_MAX
(C99)
valor máximo de unsigned char, unsigned short, unsigned int,
unsigned long y unsigned long long respectivamente
(constante de macro)

Ejemplo

#include <stdio.h>
#include <limits.h>

int main(void)
{   
    printf("CHAR_BIT   = %d\n", CHAR_BIT);
    printf("MB_LEN_MAX = %d\n", MB_LEN_MAX);
    printf("\n");

    printf("CHAR_MIN   = %+d\n", CHAR_MIN);
    printf("CHAR_MAX   = %+d\n", CHAR_MAX);
    printf("SCHAR_MIN  = %+d\n", SCHAR_MIN);
    printf("SCHAR_MAX  = %+d\n", SCHAR_MAX);
    printf("UCHAR_MAX  = %u\n",  UCHAR_MAX);
    printf("\n");

    printf("SHRT_MIN   = %+d\n", SHRT_MIN);
    printf("SHRT_MAX   = %+d\n", SHRT_MAX);
    printf("USHRT_MAX  = %u\n",  USHRT_MAX);
    printf("\n");
    
    printf("INT_MIN    = %+d\n", INT_MIN);
    printf("INT_MAX    = %+d\n", INT_MAX);
    printf("UINT_MAX   = %u\n",  UINT_MAX);
    printf("\n");
    
    printf("LONG_MIN   = %+ld\n", LONG_MIN);
    printf("LONG_MAX   = %+ld\n", LONG_MAX);
    printf("ULONG_MAX  = %lu\n",  ULONG_MAX);
    printf("\n");
        
    printf("LLONG_MIN  = %+lld\n", LLONG_MIN);
    printf("LLONG_MAX  = %+lld\n", LLONG_MAX);
    printf("ULLONG_MAX = %llu\n",  ULLONG_MAX);
    printf("\n");
}

Posible salida:

CHAR_BIT   = 8
MB_LEN_MAX = 16

CHAR_MIN   = -128
CHAR_MAX   = +127
SCHAR_MIN  = -128
SCHAR_MAX  = +127
UCHAR_MAX  = 255

SHRT_MIN   = -32768
SHRT_MAX   = +32767
USHRT_MAX  = 65535

INT_MIN    = -2147483648
INT_MAX    = +2147483647
UINT_MAX   = 4294967295

LONG_MIN   = -9223372036854775808
LONG_MAX   = +9223372036854775807
ULONG_MAX  = 18446744073709551615

LLONG_MIN  = -9223372036854775808
LLONG_MAX  = +9223372036854775807
ULLONG_MAX = 18446744073709551615

Límites de los tipos de punto flotante

Definido en el encabezado <float.h>
FLT_RADIX
la base (radix entero) utilizado por la representación de los tres tipos de punto flotante
(constante de macro)
DECIMAL_DIG
(C99)
conversión de long double a decimal con al menos dos digitos DECIMAL_DIG y de vuelta a long double es la conversión de identidad: esta es la precisión decimal requerida para serializar/deserializar un long double.
(constante de macro)
FLT_DECIMAL_DIGDBL_DECIMAL_DIGLDBL_DECIMAL_DIG
(C11)
conversión de float/double/long double a decimal con al menos FLT_DECIMAL_DIG/DBL_DECIMAL_DIG/LDBL_DECIMAL_DIG dígitos y viceversa es la conversión de identidad: ésta es la precisión decimal necesaria para serializar/deserializar un valor de coma flotante. Definido como mínimo a 6, 10 y 10 respectivamente, o 9 para IEEE float y 17 para IEEE double. (ver también el análogo de C++ max_digits10)
(constante de macro)
FLT_MINDBL_MINLDBL_MIN
valor mínimo de float, double y long double respectivamente
(constante de macro)
FLT_TRUE_MINDBL_TRUE_MINLDBL_TRUE_MIN
(C11)
valor positivo mínimo de float, double y long double respectivamente
(constante de macro)
FLT_MAXDBL_MAXLDBL_MAX
valor máximo de float, double y long double respectivamente
(constante de macro)
FLT_EPSILONDBL_EPSILONLDBL_EPSILON
diferencia entre 1.0 y el siguiente valor representable por float, double y long double respectivamente
(constante de macro)
FLT_DIGDBL_DIGLDBL_DIG
número de dígitos decimales que se garantiza que se conservan en el texto -> float/double/long double -> viaje de ida y vuelta de texto sin cambios por redondeo o desbordamiento (ver también el análogo de C++ digits10 for detail)
(constante de macro)
FLT_MANT_DIGDBL_MANT_DIGLDBL_MANT_DIG
número de dígitos FLT_RADIX de base que se puede representar sin perder precisión para float, double y long double respectivamente
(constante de macro)
FLT_MIN_EXPDBL_MIN_EXPLDBL_MIN_EXP
número entero negativo mínimo, tal que FLT_RADIX elevado por la potencia uno menos que ese número entero es un valor normalizado. float, double and long double respectivamente
(constante de macro)
FLT_MIN_10_EXPDBL_MIN_10_EXPLDBL_MIN_10_EXP
número entero negativo mínimo, tal que 10 elevado por la potencia uno menos que ese número entero es un valor normalizado. float, double and long double respectivamente
(constante de macro)
FLT_MAX_EXPDBL_MAX_EXPLDBL_MAX_EXP
número entero positivo máximo, tal que FLT_RADIX elevado por la potencia uno menos que ese número entero es un valor normalizado. float, double and long double respectivamente
(constante de macro)
FLT_MAX_10_EXPDBL_MAX_10_EXPLDBL_MAX_10_EXP
número entero positivo máximo, tal que 10 elevado por la potencia uno menos que ese número entero es un valor normalizado. float, double and long double respectivamente
(constante de macro)
modo de redondeo de la aritmética de punto flotante, igual a float_round_style
(constante de macro)
uso de la precisión ampliada para resultados intermedios: 0 no se utiliza, se utiliza 1 double en lugar de float, 2: se utiliza long double
(constante de macro)
FLT_HAS_SUBNORMDBL_HAS_SUBNORMLDBL_HAS_SUBNORM
(C11)
si el tipo admite números subnormales (denormales): -1 indeterminable, 0 ausente, 1 presente


si el tipo admite números subnormales: -1 indeterminable, 0 absent, 1 present
(constante de macro)

Ejemplo

#include <stdio.h>
#include <float.h> 
#include <math.h>

int main(void)
{
    printf("FLT_RADIX    = %d\n", FLT_RADIX);
    printf("DECIMAL_DIG  = %d\n", DECIMAL_DIG);
    printf("FLT_MIN      = %e\n", FLT_MIN);
    printf("FLT_MAX      = %e\n", FLT_MAX);
    printf("FLT_EPSILON  = %e\n", FLT_EPSILON);
    printf("FLT_DIG      = %d\n", FLT_DIG);
    printf("FLT_MANT_DIG = %d\n", FLT_MANT_DIG);
    printf("FLT_MIN_EXP  = %d\n",  FLT_MIN_EXP);
    printf("FLT_MIN_10_EXP  = %d\n",  FLT_MIN_10_EXP);
    printf("FLT_MAX_EXP     = %d\n",  FLT_MAX_EXP);
    printf("FLT_MAX_10_EXP  = %d\n",  FLT_MAX_10_EXP);
    printf("FLT_ROUNDS      = %d\n",  FLT_ROUNDS);
    printf("FLT_EVAL_METHOD = %d\n",  FLT_EVAL_METHOD);
    printf("FLT_HAS_SUBNORM = %d\n",  FLT_HAS_SUBNORM);
}

Posible salida:

FLT_RADIX    = 2
DECIMAL_DIG  = 37
FLT_MIN      = 1.175494e-38
FLT_MAX      = 3.402823e+38
FLT_EPSILON  = 1.192093e-07
FLT_DIG      = 6
FLT_MANT_DIG = 24
FLT_MIN_EXP  = -125
FLT_MIN_10_EXP  = -37
FLT_MAX_EXP     = 128
FLT_MAX_10_EXP  = 38
FLT_ROUNDS      = 1
FLT_EVAL_METHOD = 1
FLT_HAS_SUBNORM = 1

Véase también

Documentación de C++ para Interfaz de límites numéricos de C++
Morty Proxy This is a proxified and sanitized view of the page, visit original site.