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 :

Afficher un 'long long int'


Sujet :

C

  1. #21
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    "warning: format '%I64i' expects type 'int', but argument 7 has type 'long long int"

  2. #22
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par uriotcea Voir le message
    "warning: format '%I64i' expects type 'int', but argument 7 has type 'long long int"
    Huh, ça, c'est un bug de gcc !

  3. #23
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Une question pourquoi le code ci-dessous ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifdef __WIN32__
      #define LLONG %I64i
    #else
      #define LLONG %lld
    #endif
     
    long long int LLi=2000000000;
    LLi*=100;
    printf("LLONG\n",LLi);

  4. #24
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par uriotcea Voir le message
    Une question pourquoi le code ci-dessous ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifdef __WIN32__
      #define LLONG %I64i
    #else
      #define LLONG %lld
    #endif
     
    long long int LLi=2000000000;
    LLi*=100;
    printf("LLONG\n",LLi);
    Le remplacement des macros n'est pas fait dans les chaines.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #ifdef __WIN32__
      #define LLONG "%I64i"
    #else
      #define LLONG "%lld"
    #endif
     
    long long int LLi=2000000000;
    LLi*=100;
    printf(LLONG "\n",LLi);

  5. #25
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par uriotcea Voir le message
    A ma connaissance, la bonne macro est WIN32 ou _WIN32
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #if defined WIN32 || defined _WIN32
    ...

  6. #26
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Oui tu as raison, j'ai redéfinie __WIN32__ chez moi par commodité de maniére à pouvoir dans mes code l'iniber ou non à convenance sans modifier le systéme

  7. #27
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Le problème avec ces macros, c'est quand tu te retrouves avec des TCHAR ou simplement de l'unicode.

    Car aucun compilo à ma connaissance n'accepte de reconnaître ceci comme une grande chaîne unicode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L"blabla" "%lli" "blabla"
    ...Il faut rajouter le L à chaque fois.

    PS: Pourquoi utiliser %lld mais %I64i ? Ça marche aussi bien avec un d, vous savez...

  8. #28
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    ok pour l'unicode, sinon je pige pas ton PS

  9. #29
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Mon PS dit: Si tu utilises %lld, alors utilise %I64d aussi (plutôt que %I64i).

  10. #30
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Car aucun compilo à ma connaissance n'accepte de reconnaître ceci comme une grande chaîne unicode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L"blabla" "%lli" "blabla"
    ...Il faut rajouter le L à chaque fois.
    C'est demande par C99, en C90 c'est un comportement indefini si j'ai bonne memoire. Si je ne me suis pas plante dans ma verification, gcc et Sun cc le font correctement.

  11. #31
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Ha ok, %I64i ou %I64d provoque le même soucie

  12. #32
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    C'est demande par C99, en C90 c'est un comportement indefini si j'ai bonne memoire. Si je ne me suis pas plante dans ma verification, gcc et Sun cc le font correctement.
    Pardonne ma confusion, qu'est ce qui est demandé par le standard exactement?
    Le refus ou l'acceptation?

  13. #33
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Pardonne ma confusion, qu'est ce qui est demandé par le standard exactement?
    Le refus ou l'acceptation?
    L'acceptation.

  14. #34
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 381
    Points : 41 582
    Points
    41 582
    Par défaut
    OK merci. Y'a plus qu'à prier pour que M$ revienne sur sa décision de s'asseoir sur C99...

  15. #35
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par uriotcea Voir le message
    Oui tu as raison, j'ai redéfinie __WIN32__ chez moi par commodité de maniére à pouvoir dans mes code l'iniber ou non à convenance sans modifier le systéme
    Tu n'as pas du tout le droit de définir un identificateur commençant par _. C'est réservé à l'implémentation Si tu veux tes propres macros, utilise par exemple OS_WIN32, OS_LINUX etc.

  16. #36
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    Qu'entends tu exactement par 'tu n'as pas le droit...'

  17. #37
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par uriotcea Voir le message
    Qu'entends tu exactement par 'tu n'as pas le droit...'
    Tu crées un comportement indéfini (c'est un bug grave et difficile à détecter). En effet, si une macro du même nom existe et que tu la redéfinies, il peut arriver n'importe quoi. Le code généré pourrait être différent.

  18. #38
    Membre averti Avatar de uriotcea
    Homme Profil pro
    Ingénieur / physicien
    Inscrit en
    Septembre 2003
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur / physicien
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 301
    Points : 444
    Points
    444
    Par défaut
    ok je vois

Discussions similaires

  1. [question] cast de long vers int
    Par Faiche dans le forum Langage
    Réponses: 3
    Dernier message: 29/11/2006, 10h22
  2. Les "long long int"
    Par Pragmateek dans le forum C
    Réponses: 23
    Dernier message: 21/06/2006, 16h53
  3. décallage sur long long int
    Par trax44 dans le forum C
    Réponses: 9
    Dernier message: 26/02/2006, 11h41
  4. comment afficher un long long ?
    Par HRS dans le forum C
    Réponses: 2
    Dernier message: 14/02/2006, 02h05
  5. [Transtypage] Long en int
    Par Bugmaster dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2004, 09h05

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