Los desarrolladores generalmente usan int para almacenar valores enteros, sin pensar en el rango de datos, si el rango de datos es menor, debemos utilizar unsigned char .
unsigned char
Un tipo de char tipo de datos, unsigned char puede almacenar valores entre 0 a 255 , así que podemos usar unsigned char en lugar de short o int .
He aquí un ejemplo:
#include <stdio.h>
int main()
{
unsigned char value=0;
printf("Value is: %dn",value);
value=50;
printf("Value is: %dn",value);
value=255;
printf("Value is: %dn",value);
return 0;
}
salida
Value is: 0
Value is: 50
Value is: 255
Aquí podemos ver claramente que unsigned char es capaz de almacenar valores de 0 a 255.
lo que sucederá, si el valor es mayor que 255?
int main()
{
unsigned char value=300;
printf("Value is: %dn",value);
return 0;
}
salida
value is: 44
Aquí el valle será 44
¿Por qué?
unsigned char almacenar sólo 8 bits de datos en la memoria, cuando el valor es mayor que sólo primeros 8 bits serán almacenados, ver la imagen dada.
En este valor de imagen de 8 bits es: 0010 1100 lo que equivale a 44.
Si el valor de datos si es negativo?
Podemos utilizar unsigned en lugar de char unsigned al valor de almacenar datos entre -128 a 127 , char tiendas sólo 7 bits de los datos, 8º bits se utilizan para la representación de signos.
Aquí es un ejemplo:
#include <stdio.h>
int main()
{
char value=0;
printf("Value is: %dn",value);
value=-128;
printf("Value is: %dn",value);
value=127;
printf("Value is: %dn",value);
return 0;
}
salida
Value is: 0
Value is: -128
Value is: 127