55 votes

Existe-t-il des types plus grands que long long int en C++ ?

Existe-t-il des types plus grands que long long int en C++ ?

Mon compilateur est g++.

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 que long 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.

23voto

Jon Points 194296

Il existe une version de gcc extension pour les entiers de 128 bits .

0 votes

Nota: intmax_t ne le considère pas stackoverflow.com/questions/21265462/

11voto

jho Points 1131

Non, mais vous pouvez utiliser des bibliothèques comme BPF pour gérer des nombres plus importants.

10voto

J T Points 2333

En fonction de vos besoins, vous pouvez créer votre propre structure pour gérer le type de données :

#include <cstdint>

struct uint256_t
{
    std::uint64_t bits[4];
};

uint256_t x;

9voto

KitsuneYMG Points 7604

__int128 __uint128

4 votes

__int128 n'est pas activé sur Microsoft Visual

1 votes

@BrendanWebster Pouvez-vous l'activer ?

7voto

Ciro Santilli Points 3341

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.com

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.

Powered by:

X