Selección de tipo para valores numéricos literales en C
Me pregunto sobre esto: cuando intento asignar un valor entero a unint
variable (compilador de 16 bits, 2 bytes para enteros) digamos:
int a;
a=40000;
Eso no se puede representar con el rango del tipo que se truncará. Pero lo que estoy viendo es que el valor resultante ena es el patrón de bits para -25000 (o algún número cercano) lo que significa que la representación binaria que el compilador elige para el decimal 40000 era una representación entera sin signo. Y eso plantea mi pregunta: ¿cómo elige el compilador el tipo para esta expresión literal?
Supongo que utiliza el tipo capaz de manejar el valor con menos espacio de almacenamiento necesario.