Reglas de promoción de tipo implícito
Esta publicación está destinada a ser utilizada como una pregunta frecuente con respecto a la promoción de enteros implícitos en C, particularmente la promoción implícita causada por las conversiones aritméticas habituales y / o las promociones de enteros.
Ejemplo 1)
¿Por qué esto da un número entero grande y extraño y no 255?
unsigned char x = 0;
unsigned char y = 1;
printf("%u\n", x - y);
Ejemplo 2)
¿Por qué esto da "-1 es mayor que 0"?
unsigned int a = 1;
signed int b = -2;
if(a + b > 0)
puts("-1 is larger than 0");
Ejemplo 3)
¿Por qué cambiar el tipo en el ejemplo anterior ashort
¿arreglar el problema?
unsigned short a = 1;
signed short b = -2;
if(a + b > 0)
puts("-1 is larger than 0"); // will not print
(Estos ejemplos estaban destinados a una computadora de 32 o 64 bits con 16 bits cortos).