#include <stdio.h>
#include <limits.h>
int main()
{
printf("Numero de bits que tiene un tipo CHAR = %i\n\n", CHAR_BIT
); /*
No funcionan ¿Por qué?
printf("Numero de bits que tiene un tipo INT = %i\n\n", WORD_BIT);
printf("Numero de bits que tiene un tipo LONG = %i\n\n", LONG_BIT);
*/
//-------------------------------------------------------------------------------------
printf("El valor minimo de CHAR = %i\n", CHAR_MIN
); printf("El valor maximo de CHAR = %i\n\n", CHAR_MAX
);
printf("El valor minimo de SIGNED CHAR = %i\n", SCHAR_MIN
); printf("El valor maximo de SIGNED CHAR = %i\n\n", SCHAR_MAX
);
printf("El valor minimo de UNSIGNED CHAR = 0\n"); printf("El valor maximo de UNSIGNED CHAR = %u\n\n", UCHAR_MAX
);
//-------------------------------------------------------------------------------------
printf("El valor minimo de SHORT INT = %i\n", SHRT_MIN
); printf("El valor maximo de SHORT INT = %i\n\n", SHRT_MAX
);
printf("El valor minimo de UNSIGNED SHORT INT = 0\n"); printf("El valor maximo de UNSIGNED SHORT INT = %u\n\n", USHRT_MAX
);
printf("El valor minimo de INT = %i\n", INT_MIN
); printf("El valor maximo de INT = %i\n\n", INT_MAX
);
printf("El valor minimo de UNSIGNED INT = 0\n"); printf("El valor maximo de UNSIGNED INT = %u\n\n", UINT_MAX
);
//-------------------------------------------------------------------------------------
printf("El valor minimo de LONG = %li\n", LONG_MIN
); printf("El valor maximo de LONG = %li\n\n", LONG_MAX
);
printf("El valor minimo de UNSIGNED LONG = 0\n"); printf("El valor maximo de UNSIGNED LONG = %lu\n\n", ULONG_MAX
);
printf("El valor minimo de LONG LONG = %lli\n", LLONG_MIN
); printf("El valor maximo de LONG LONG = %lli\n\n", LLONG_MAX
);
printf("El valor minimo de UNSIGNED LONG LONG = 0\n"); printf("El valor maximo de UNSIGNED LONG LONG = %llu\n\n", ULLONG_MAX
);
//-------------------------------------------------------------------------------------
// Faltan los rangos de valores para los float, double y long double, además de sus formateadores.
return(0);
}
/*
Estos Valores y formateadores los he ido recopilando y testeando, algunos no me han funcionado como el %Li.
Valores de tipos de datos según compilador y sistema operativo (16, 32 o 64bits).
================================================================================
signed char -> tipo caracter con signo -> %c | Tamaño = 1byte | Rango = -128...127 |
char -> tipo caracter con signo -> %c | Tamaño = 1byte | Rango = -128...127 | Ejemplo: char a='e';
unsigned char -> tipo caracter sin signo -> %c | Tamaño = 1byte | Rango = 0...255 |
short -> tipo entero corto con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 | Ejemplo: short b=-15;
int -> tipo entero normal con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 | Ejemplo: int c=1024;
unsigned int -> tipo entero normal sin signo -> %u | Tamaño = 2bytes | Rango = 0...65535 | Ejemplo: unsigned int d=50456;
signed int -> tipo entero normal con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 |
short int -> tipo entero corto con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 |
unsigned short int -> tipo entero corto sin signo -> %u | Tamaño = 2bytes | Rango = 0...65535 |
signed short int -> tipo entero corto con signo -> %i | Tamaño = 2bytes | Rango = -32768...32767 |
long int -> tipo entero largo con signo -> %li | Tamaño = 4bytes | Rango = -2147483648...2147483637 |
signed long int -> tipo entero largo con signo -> %li | Tamaño = 4bytes | Rango = -2147483648...2147483637 |
unsigned long int -> tipo entero largo sin signo -> %li | Tamaño = 4bytes | Rango = 0...4294967295 |
long -> tipo entero largo con signo -> %li | Tamaño = 4bytes | Rango = -2147483648...2147483637 | Ejemplo: long e=123456;
unsigned long -> tipo entero largo sin signo -> %li | Tamaño = 4bytes | Rango = 0...4294967295 |
float -> tipo real normal -> %f | Tamaño = 4bytes | Rango = 3.4*E-38...3.4*E38 | Ejemplo: float a=15.678;
double -> tipo real largo -> %lf | Tamaño = 8bytes | Rango = 1.7*E-308...1.7*E308 | Ejemplo: float a=15.678;
long double -> tipo real muy largo -> %Lf | Tamaño = 8bytes o 10bytes | Rango = 1.7*E-308...1.7*E308 o 3.4*E-4932...3.4*E4932 | Ejemplo: float a=15.678;
¿Cómo saturar el valor de las variables?
Formateadores (Wikipedia: https://es.wikipedia.org/wiki/Printf)
===============================================================
%d ó %i entero en base 10 con signo (int)
%u entero en base 10 sin signo (int)
%o entero en base 8 sin signo (int)
%x entero en base 16, letras en minúscula (int)
%X entero en base 16, letras en mayúscula (int)
%li ó %ld ?
%lu
%lli
%llu
%Li ?
%f Coma flotante decimal de precisión simple (float)
%lf Coma flotante decimal de precisión doble (double)
%e La notación científica (mantisa / exponente), minúsculas (decimal precisión simple ó doble)
%E La notación científica (mantisa / exponente), mayúsculas (decimal precisión simple ó doble)
%c caracter (char)
%s cadena de caracteres (string)
%07i justificado a la derecha, 7 dígitos de largo, sin relleno
%.7i largo mínimo de 7 dígitos, justificado a la derecha, rellena con ceros
%8.2f tamaño total de 8 dígitos, con dos decimales
%.*f”',x,d) tamaño predeterminado,x numeros decimales
%*.*f”,x,y,d) tamaño igual a x, y numeros decimales
%s cadena terminada en null
%5s primeros cinco caracteres o delimitador
%.5s primeros cinco caracteres, sin tener en cuenta el delimitador
%20.5s primeros cinco caracteres, justificados a la derecha, con 20 caracteres de largo
%-20.5s primeros cinco caracteres, justificados a la izquierda, con 20 caracteres de largo
*/