Existe-t-il des types plus grands que long long int en C++ ?
Mon compilateur est g++.
Existe-t-il des types plus grands que long long int en C++ ?
Mon compilateur est g++.
Il existe une version de gcc extension pour les entiers de 128 bits .
Normes
Les types entiers étendus sont explicitement autorisés par les normes C et C++.
C++11
Projet C++11 N3337 3.9.1 "Types fondamentaux", paragraphe 3, dit :
Il existe cinq types d'entiers signés standard : " signed char ", " short int ", " int ", " long int " et " long long int ". Dans cette liste, chaque type fournit au moins autant de stockage que ceux qui le précèdent dans la liste. Il peut également exister des types d'entiers signés étendus définis par l'implémentation. Les types d'entiers signés standard et étendus sont collectivement appelés types d'entiers signés. Les ints ordinaires ont la taille naturelle suggérée par l'architecture de l'environnement d'exécution ; les autres types d'entiers signés sont fournis pour répondre à des besoins particuliers.
Vous devez également prendre en compte intmax_t
Le paragraphe 2 de l'article 18.4.1 "Synopsis de l'en-tête" stipule ce qui suit :
L'en-tête définit toutes les fonctions, les types et les macros de la même manière que la section 7.18 de la norme C.
C99
C99 N1256 projet les autorise explicitement au paragraphe 4 de l'article 6.2.5 "Types" :
Il existe cinq types de nombres entiers signés standard, désignés par char signé, short int, int, long int et long long int. être désignés de plusieurs autres façons, comme décrit dans 6.7.2). Il peut également exister des types d'entiers signés étendus définis par l'implémentation.28) Les types entiers signés standard et étendus sont collectivement appelés types entiers signés.29)
et 7.18.1.5 "Greatest-width integer types" paragraphe 1 dit :
Le type suivant désigne un type d'entier signé capable de représenter toute valeur de tout type d'entier signé :
intmax_t
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
1 votes
De quels types parlez-vous ? Des types entiers ou autres ? Qu'est-ce qui est "plus grand" dans ce cas : l'étendue ou la taille ? Dans tous les cas, le type
int[100]
est très probablement beaucoup plus grande quelong long
mais je ne pense pas que ce soit le sujet de votre question. Clarifiez votre question. Pour l'instant, elle n'a pas beaucoup de sens.1 votes
Vous pourriez essayer long long long long (je plaisante) je crois que long long long est le plus grand à 64 bits sur toutes les architectures
0 votes
Vous pouvez consulter ce site article de wikipédia qui renvoie à un certain nombre de bibliothèques capables de gérer un stockage plus important que long.
1 votes
@Jesus Ramos : Avec au moins 64 bits (pourrait être plus grand). @AndreyT : Pas officiellement, mais c'est une extension presque omniprésente que nous nous attendons également à voir dans la prochaine version de la norme (pour nous aligner sur le C).
1 votes
Le truc c'est que sizeof(long long) a une définition large étant sizeof(long) <= sizeof(long long) donc sur certaines machines ils sont en fait de la même taille 0_0 bizarre aint it
0 votes
__m128
dans mon compilateur, non standard bien sûr.3 votes
Où dois-je cliquer quand un commentaire est techniquement correct mais excessivement tatillon... @AndreyT sérieusement, vous n'avez pas compris ce qu'il voulait dire ?
0 votes
@Spike0xff : Non, je ne l'ai pas fait. Alors que le
int[100]
était manifestement une exagération intentionnelle (comme je l'ai dit tout de suite), il n'y a toujours aucun moyen de savoir si, disons,double
peut être qualifié de type "plus grand" pour les besoins de l'OP. C'est le cas ? Je ne sais pas. Il a une portée absolue "plus large", mais il y a des compromis, car il a le même nombre d'octets (en supposant que les deux sont 64 bits). Donc, est-il "plus grand" ou non ? Si cela est parfaitement clair pour vous, alors expliquez-le moi.0 votes
non signé long long