#include <stdint.h> // <cstdint> en C++
Le type intmax_t représente le plus grand type entier signé proposé par l'implémentation. Le type uintmax_t
joue le même rôle pour les entiers non signés. Ces deux types sont pratiques pour écrire des fonctions génériques capables de manipuler
de grandes valeurs entières sans choisir directement entre long, long long ou un autre type plus spécifique.
Pour afficher proprement ces types avec printf, il faut normalement utiliser les macros de format définies par
<inttypes.h>. Cette librairie complète <stdint.h> pour les opérations d'entrée/sortie formatées.
L'exemple suivant additionne plusieurs valeurs de type intmax_t, puis affiche le résultat avec la macro PRIdMAX.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#include <inttypes.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> int main() { intmax_t first = INTMAX_C( 10000000000 ); intmax_t second = INTMAX_C( 25000000000 ); intmax_t total = first + second; printf( "total == %" PRIdMAX "\n", total ); return EXIT_SUCCESS; } |
Les résultats produits par cet exemple sont :
total == 35000000000
Le type uintmax_t suit la même logique pour les valeurs non signées. Pour l'affichage, il faut alors utiliser la macro
PRIuMAX, elle aussi définie dans <inttypes.h>.
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :