Maison > développement back-end > C++ > Pourquoi les littéraux entiers non signés en C et C sont-ils promus en types plus grands ?

Pourquoi les littéraux entiers non signés en C et C sont-ils promus en types plus grands ?

Patricia Arquette
Libérer: 2024-12-12 19:30:15
original
700 Les gens l'ont consulté

Why Do Unsigned Integer Literals in C and C   Promote to Larger Types?

Entiers sans suffixes : promus vers des types plus grands si nécessaire

La requête d'origine explorait pourquoi une itération jusqu'à 10 milliards entraînait un comportement inattendu. On soupçonnait que les littéraux entiers sans suffixes pourraient ne pas être par défaut le type int habituel.

En C et C , ces littéraux sont automatiquement promus à un type entier approprié. Cela garantit que leur valeur peut être représentée dans les limites d'au moins un des types entiers disponibles.

Normes C et C

Selon la norme C 11 ( [lex.icon] ¶2) et la norme C99 (§6.4.4.1), un littéral entier sans suffixe reçoit le plus petit type de la liste suivante qui peut accueillir sa valeur :

  • int
  • long int
  • long long int

Dans le cas de 10 milliards, cela la constante entière serait classée comme long int (ou long long int si long int est défini comme 32 bits).

Erreurs de compilation pour les littéraux excessivement grands

C99 et C 11 indiquent tous deux que les littéraux qui dépassent la plage représentable pour tous les types entiers autorisés entraînent un erreur de compilation. Cependant, certains compilateurs peuvent gérer cela de manière non standard, par exemple en tronquant silencieusement ou en supprimant les chiffres en excès.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal