Participer au site avec un Tip
Rechercher
 

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 :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Les types int_leastN_t et int_fastN_t

Les types de largeur exacte Les types intptr_t et uintptr_t


Entête à inclure

#include <stdint.h>  // <cstdint> en C++

Types de largeur minimale

Les types int_least8_t, int_least16_t, int_least32_t et int_least64_t garantissent une largeur minimale. Par exemple, int_least16_t contient au moins 16 bits, mais l'implémentation peut choisir un type plus large si c'est nécessaire.

Famille Description
int_leastN_t Entier signé contenant au moins N bits.
uint_leastN_t Entier non signé contenant au moins N bits.

Types rapides

Les types int_fast8_t, int_fast16_t, int_fast32_t et int_fast64_t garantissent eux aussi une largeur minimale, mais la priorité est donnée à la rapidité de manipulation par le processeur. Il est donc fréquent qu'un int_fast8_t soit plus large que 8 bits.

Famille Description
int_fastN_t Entier signé d'au moins N bits, choisi pour être rapide.
uint_fastN_t Entier non signé d'au moins N bits, choisi pour être rapide.

Le bloc suivant montre comment utiliser ces deux familles de types. Le type int_least16_t est employé pour documenter une contrainte de taille minimale, tandis que uint_fast32_t est choisi pour un compteur manipulé fréquemment.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>

int main() {

    int_least16_t delta = -32000;
    uint_fast32_t counter = 0;

    for ( unsigned int index = 0; index < 5; index++ ) {
        counter += UINT32_C( 1000 );
    }

    printf( "delta == %ld\n", (long) delta );
    printf( "counter == %lu\n", (unsigned long) counter );

    return EXIT_SUCCESS;
}
Utilisation des types least et fast

Les résultats produits par cet exemple sont :

delta == -32000
counter == 5000

Quand choisir quelle famille ?

Si vous devez écrire ou relire un format binaire strict, préférez les types de largeur exacte. Si vous avez seulement besoin d'une capacité minimale, les types least sont plus souples. Enfin, si vous cherchez surtout un type efficace pour le processeur tout en imposant une largeur minimale, les types fast sont plus adaptés.

Sujets connexes

Constantes de limites
La librairie stdint.h
Types de largeur exacte


Les types de largeur exacte Les types intptr_t et uintptr_t




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé