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.