Type de littéraux entiers non int par défaut
En programmation, le type d'un littéral entier est généralement supposé être int. Cependant, il existe des cas où cela peut ne pas être le cas.
Considérez le code C suivant :
for (i = 0; i < 10000000000; i++)
Bien que le littéral 10000000000 ne soit pas suivi d'un suffixe « L » (qui explicitement désigne un type entier long), le compilateur reconnaît que cette valeur dépasse la plage d'un 32 bits entier.
Selon les normes C99 et C 11, le type d'une constante entière est déterminé par la première entrée du tableau 6 dans laquelle sa valeur peut être représentée. Pour les constantes décimales sans suffixes, le tableau 6 spécifie les types suivants par ordre décroissant :
Par conséquent, dans l'exemple de code donné, le compilateur interprète le littéral comme un long int (ou long long int si long int est de 32 bits) pour s'adapter à sa grande valeur.
Il est important de noter que les littéraux « trop gros » entraînent généralement une erreur de compilation. En effet, la valeur ne peut être représentée par aucun des types autorisé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!