No puede deshacerse de "esta constante decimal no está firmada solo en ISO C90" advertencia
warnings constants (1)
unsigned hash = 2166136261u; // note the u.
Necesita un sufijo u
para indicar que este es un número sin firmar. Sin el sufijo u
será un número firmado. Ya que
2166136261 > 2³¹ - 1 = INT_MAX,
Este literal entero será problemático.
Estoy utilizando el hash FNV como algoritmo de hash en mi implementación de Hash Table, pero recibo la advertencia en el título de la pregunta en esta línea:
unsigned hash = 2166136261;
No entiendo por qué sucede esto porque cuando hago esto:
printf("%u/n", UINT_MAX);
printf("2166136261/n");
Entiendo esto:
4294967295
2166136261
Lo que parece estar bajo los límites de mi máquina ...
¿Por qué recibo la advertencia y cuáles son mis opciones para deshacerme de ella?