Dans le chapitre "conventions lexicales/Littéraux", il mentionne simplement que sans suffixe, il peut s'agir de int, long int ou long long int. Où indique-t-il explicitement que la mise en œuvre est définie ou, sinon, de quel type il s'agit?Où puis-je lire dans le standard C++ de quel type est un littéral entier?
Répondre
Dans lex.icon
, le deuxième paragraphe, il y a une table. Avant le tableau, il est indiqué
Le type d'un littéral entier est le premier de la liste correspondante dans le tableau 6 dans lequel sa valeur peut être représentée.
Et puis dans le tableau, sous les constantes décimales, il énumère, dans l'ordre, int
, long int
, long long int
. Donc, selon la déclaration ci-dessus, si elle peut être représentée par un int
, alors il s'agit d'un int
. S'il ne peut pas être représenté par un int
, mais qu'il peut être représenté par un long int
, alors il s'agit d'un long int
. Et s'il ne peut pas être représenté par un long int
mais qu'il peut être représenté par un long long int
, alors c'est un long long int
.
Il existe des règles différentes pour les constantes de octal et hexadécimal, qui leur permettent d'être des types non signés, commandés pour priorité int
, unsigned int
, long int
, unsigned long int
, long long int
, unsigned long long int
.
Vous n'avez pas seulement répondu à votre question? – Rakete1111
Voir http://fr.cppreference.com/w/cpp/language/implicit_conversion – Bathsheba
Je pense que votre question est "comment puis-je déterminer le type d'un littéral entier dans une implémentation de compilateur particulier?" droite? – nicomp