littéraux entiers: pas toujours int par défaut
tout en itérant dans une boucle, les littéraux entiers excessivement grands peuvent conduire à des problèmes inattendus. Normalement, les littéraux sans suffixes sont interprétés comme int. Cependant, cette hypothèse peut ne pas contenir pour de très grandes valeurs.
déborder et promotion
Lorsqu'un littéral entier dépasse la plage d'intre (généralement 32 bits), un comportement non défini (UB) peut en résulter. Cependant, dans certains cas, le compilateur peut automatiquement promouvoir le littéral en un type plus grand, tel que long int (qui est généralement 64 bits). La section 6.4.4.1.1 de la norme C99 indique que le type littéral est la première répertoriée dans laquelle sa valeur peut être représentée (c'est-à-dire INT, Long Int, Long Long Int) ou un type entier étendu si nécessaire. nécessaire.
Exemple
Considérez le littéral entier 10000000000. Dans un environnement C, cela serait interprété comme un long int. Cependant, si le compilateur utilisé est un compilateur 32 bits, cela pourrait entraîner une erreur de compilation en raison du littéral trop grand pour les types entiers disponibles.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3