Ciao, volevo sapere se esiste un tipo di default per le costanti numeriche (intere) o comunque qual è la regola generale in questi casi.
Per esempio il seguente codice:
#include <stdio.h>
#include <inttypes.h>
int main()
{
uint64_t a = 12345678987654321;
uint64_t b = 1 << 32;
printf("%" PRIu64 "\n", a);
printf("%" PRIu64 "\n", b);
return 0;
}
mi restituisce un warning:
left shift count >= width of type [-Wshift-count-overflow]
Invece se modifico la dichiarazione di b in:
uint64_t b = (uint64_t)1 << 32;
va bene.
Ciò mi fa ipotizzare che il compilatore utilizzi in modo automatico il tipo intero di dimensioni minime o comunque sufficienti a contenere quella costante numerica. E' più o meno così?