2017-10-11 3 views
1

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?

+1

Vous n'avez pas seulement répondu à votre question? – Rakete1111

+0

Voir http://fr.cppreference.com/w/cpp/language/implicit_conversion – Bathsheba

+0

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

Répondre

3

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.