Impossible de se débarrasser de l’avertissement «cette constante décimale est non signée uniquement dans ISO C90»

J’utilise le hachage FNV comme algorithme de hachage dans mon implémentation de la table de hachage, mais l’avertissement s’affiche dans le titre de la question sur cette ligne:

unsigned hash = 2166136261; 

Je ne comprends pas pourquoi cela se produit parce que quand je fais ceci:

 printf("%u\n", UINT_MAX); printf("2166136261\n"); 

J’ai compris:

 4294967295 2166136261 

Ce qui semble être sous les limites de ma machine …

Pourquoi est-ce que je reçois l’avertissement et quelles sont mes options pour m’en débarrasser?

     unsigned hash = 2166136261u; // note the u. 

    Vous avez besoin d’un suffixe u pour indiquer qu’il s’agit d’un nombre non signé. Sans le suffixe u ce sera un numéro signé. Puisque

     2166136261 > 2³¹ - 1 = INT_MAX, 

    ce littéral entier sera problématique.