Assigne un grand nombre à unsigned int in C

J’essaie d’atsortingbuer un numéro à unsigned int, mais il en résulte une erreur. Je pensais que tant que le nombre est compris entre 0 et 2 ^ 32, cela devrait fonctionner. Voici mon code.

unsigned int number = 4026658824; 

Cependant, je reçois cette erreur.

erreur: constante promue selon la norme ISO C 1999

Le type de constante décimale dépend du type dans lequel elle peut être représentée, conformément à 6.4.4.1 Constantes entières :

Le type d’une constante entière est le premier de la liste correspondante dans laquelle sa valeur peut être représentée.

(Voir le tableau dans le lien pour savoir comment le langage C dit que le type réel de constantes de nombre entier est déduit).

En règle générale, un int signé ne peut pas représenter la valeur 4026658824 . Ainsi, 4026658824 probablement le type long int ou long long int sur votre système. Si unsigned int peut être représenté par 4026658824 alors c’est 4026658824 mais votre compilateur est prudent.

Vous pouvez utiliser le suffixe u ou U ou le lancer en unsigned int . Le suffixe u peut ne pas fonctionner si la constante entière a une valeur plus grande. Par exemple, si 17179869184u ne peut pas être représenté par unsigned int son type peut être unsigned long int ou unsigned long long int et vous pouvez toujours obtenir des diagnostics à ce sujet.

En plus des réponses ci-dessus, si vous souhaitez qu’une variable ait définitivement un certain nombre de bits, utilisez les types entiers à largeur fixe . En faisant du travail embarqué, nous devons faire attention à cela (le processeur ne peut être que 8 ou 16 bits) donc nous les utilisons presque toujours pour tout.