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 macros de constantes entières

Les constantes de limites


Entête à inclure

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

Construire une constante du bon type

Les suffixes des constantes entières du langage C peuvent devenir pénibles à maintenir quand on veut viser une largeur précise. La librairie <stdint.h> fournit donc des macros permettant de construire une constante adaptée au type souhaité.

Famille Exemples Description
Constantes signées INT8_C, INT16_C, INT32_C, INT64_C Construit une constante compatible avec la largeur signée demandée.
Constantes non signées UINT8_C, UINT16_C, UINT32_C, UINT64_C Construit une constante compatible avec la largeur non signée demandée.
Constantes maximales INTMAX_C, UINTMAX_C Construit une constante compatible avec intmax_t ou uintmax_t.

L'exemple suivant construit deux constantes 64 bits. Le code reste lisible et laisse le préprocesseur produire le suffixe réellement adapté à la plate-forme.

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

int main() {

    int64_t signedValue = INT64_C( -10000000000 );
    uint64_t unsignedValue = UINT64_C( 10000000000 );

    printf( "signedValue == %lld\n", (long long) signedValue );
    printf( "unsignedValue == %llu\n", (unsigned long long) unsignedValue );

    return EXIT_SUCCESS;
}
Utilisation des macros de constantes

Les résultats produits par cet exemple sont :

signedValue == -10000000000
unsignedValue == 10000000000

Ces macros sont surtout intéressantes quand vous écrivez du code portable. Elles évitent de présumer qu'un suffixe comme LL ou ULL correspond exactement à ce que vous voulez sur toutes les plates-formes visées.

Sujets connexes

Constantes de limites
La librairie stdint.h
Types de largeur exacte
Types intmax_t et uintmax_t


Les constantes de limites




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