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 :

Grandes constantes décimales


Sujet :

C

  1. #1
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut Grandes constantes décimales
    Bonjour,

    J’ai une petite fonction pour transformer une taille de fichier en une suite de 4 caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void taille2car(size_t tail, char* car)
    {
        car[0]=(char)(((long int)tail & 4278190080) >> 24);
        car[1]=(char)(((long int)tail & 16711680) >> 16);
        car[2]=(char)(((long int)tail & 65280) >> 8);
        car[3]=(char)((long int)tail & 255);
    }
    le compilateur m’indique un warning pour la ligne 3 :
    « this decimal constant is unsigned only in ISO C90 »

    Ma question est la suivante : Comment dois-je modifier le code pour éviter ce warning ?
    Merci

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Je pense que des valeur hexadécimale serait mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void taille2car(size_t tail, char* car)
    {
        car[0]=(char)(((long int)tail & 0xFFFFFFFF) >> 24);
        car[1]=(char)(((long int)tail & 0xFFFFFF) >> 16);
        car[2]=(char)(((long int)tail & 0xFFFF) >> 8);
        car[3]=(char)((long int)tail & 0xFF);
    }

  3. #3
    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
    À quoi sert le cast vers long int ? Pourquoi utiliser des types signés ?

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Juin 2012
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2012
    Messages : 257
    Points : 321
    Points
    321
    Par défaut
    Merci pour vos réponses ultra-rapides.
    @Kannagi : effectivement je n’ai plus de warning en hexa
    @ Matt_Houston : le cast c’est parce que je me demandais le nombre d’octets du type size_t et effectivement je peux utiliser des non signés.

    Petite précision quand même :
    Ce n’est pas 0xFFFFFFFF mais 0xFF000000 etc.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 27/09/2016, 06h32
  2. Le grand mode d'emploi du forum, à lire si vous souhaitez tout savoir !
    Par Anomaly dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 2
    Dernier message: 03/06/2013, 17h36
  3. Réponses: 5
    Dernier message: 20/09/2012, 13h35
  4. Réponses: 6
    Dernier message: 01/11/2010, 18h40
  5. Réponses: 5
    Dernier message: 26/05/2009, 10h26

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