IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

uint32_t format d'affichage


Sujet :

C

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Points : 65
    Points
    65
    Par défaut uint32_t format d'affichage
    bonjour,
    j'utilise une variable de type uint32_t mais en retour lors de l'affichage elle me donne une valeur négative???!!! c'est logique?

    j'ai fait un affichage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("%d",valeur);
    est-ce que %d est exacte pour le type de uint32_t?

    Merci

  2. #2
    Expert confirmé
    Inscrit en
    Mars 2005
    Messages
    1 431
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 1 431
    Points : 4 182
    Points
    4 182
    Par défaut
    Le document de référence te donne la réponse : http://en.cppreference.com/w/c/types/integer. Il existe des macros dédiées au formatage des types de taille fixe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    uint32_t value = 42;
    printf("%" PRIu32 "\n", value);

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Points : 65
    Points
    65
    Par défaut
    non ça marche pas ça.
    j'ai utilisé seulement %u

  4. #4
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Bonjour,
    si tu utilises les uintN_t alors la bonne manière de faire (celle qui est décrite par le standard C11) est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
    #include <inttypes.h>
    #include <stdint.h>
     
    int main(void)
    {
      uint32_t u32=UINT32_C(1234567890);
      printf("u32=%" PRIu32 "\n", u32);
      return 0;
    }
    #include <stdint.h> pour avoir accès aux types entiers de longueur fixe
    #include <inttypes.h> pour avoir accès aux macros sur les types entiers de longueur fixe
    UINT32_C permet de s'assurer que la constante passée en paramètre est valide
    PRIu32 est une macros remplaçant le %u de manière portable pour le type uint32_tTon code n'est pas assuré de s'exécuter correctement sur une architecture où les unisgned int ne font pas 32 bits (ce qui est extrêmement rare je te l'accorde).

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 317
    Points : 65
    Points
    65
    Par défaut
    franchement je n'ai pas bien compris!!
    c'est à dire je fais ça dans mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    uint32_t value=UINT32_C(1234567890);
      printf("value= %" PRIu32 "\n", value);
    au lieu d'utiliser simplement %u.

  6. #6
    Membre émérite
    Homme Profil pro
    sans emploi
    Inscrit en
    Janvier 2014
    Messages
    539
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : sans emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2014
    Messages : 539
    Points : 2 601
    Points
    2 601
    Par défaut
    Oui c'est ça, c'est ainsi qu'il faut utiliser ce type.

Discussions similaires

  1. MP3 File Format pour affichage spectre (image sonore)
    Par TISSEYRE dans le forum Langage
    Réponses: 1
    Dernier message: 27/09/2005, 14h50
  2. DBGrid et format d'affichage des colonnes
    Par jakouz dans le forum Composants VCL
    Réponses: 3
    Dernier message: 03/08/2005, 14h10
  3. Formater l'affichage d'un fichier
    Par devdev2003 dans le forum Linux
    Réponses: 3
    Dernier message: 28/06/2005, 17h47
  4. [CR8] Problème de Format d'affichage
    Par khabch dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 19/02/2004, 14h10
  5. [VB6] [Flexgrid] Format d'affichage des numériques
    Par yansolo dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 19/10/2002, 21h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo