"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Pourquoi le type «int» ne doit-il pas être utilisé par défaut pour des constantes entières super grandes?

Pourquoi le type «int» ne doit-il pas être utilisé par défaut pour des constantes entières super grandes?

Publié le 2025-04-13
Parcourir:342

Why Do Excessively Large Integer Literals in C and C   Sometimes Not Default to `int`?

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.
    Dernier tutoriel Plus>

    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