Maison > développement back-end > C++ > Pourquoi les grands littéraux entiers dans les boucles For se comportent-ils différemment que prévu ?

Pourquoi les grands littéraux entiers dans les boucles For se comportent-ils différemment que prévu ?

Linda Hamilton
Libérer: 2024-12-14 15:47:11
original
1000 Les gens l'ont consulté

Why Do Large Integer Literals in For Loops Behave Differently Than Expected?

Type de littéraux entiers : pas Int par défaut ?

Question :

Pourquoi une boucle for itérant jusqu'à 10 milliards prend plus de temps qu'une itération jusqu'à 1 milliards ?

Réponse :

La variable d'itération dans la boucle est de 32 bits et déborde, provoquant une boucle infinie. Le littéral représentant 10 milliards, bien qu'il n'ait pas de suffixe L, est automatiquement promu dans une plage appropriée (au moins 64 bits dans ce cas) par le compilateur.

C :

Selon la norme C 11 ([lex.icon] ¶2), le type d'un littéral entier sans suffixe est le premier du tableau 6 où sa valeur peut être représentée :

Type
int
long int
long long int

Par conséquent, dans ce cas, le littéral est interprété comme un long int ou long long int (si long int est de 32 bits).

C :

En C99 ([§6.4.4.1]), la règle est similaire. Le type d'une constante entière est déterminé par le premier type d'une liste similaire où sa valeur peut être représentée.

Types définis par l'implémentation :

Les deux C 11 ( [lex.icon] ¶3) et C99 ([§6.4.4.1 ¶5]) permettent aux littéraux entiers d'être de "types entiers étendus" (types entiers spécifiques à l'implémentation) si aucun autre type valide n'est trouvé.

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