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 :
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!