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 :

Problème affichage long long int avec %lld


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Par défaut Problème affichage long long int avec %lld
    Bonjour,

    J'ai certaines variables de type long long int et lorsque je fais des fprintf dans un fichier avec %lld, j'ai des valeurs négatives et mes variables sont pourtant positives. En essayant avec %llu, ça a l'air cohérent. Le problème vient aussi du fait que certains de mes variables sont négatives et du coup avec %llu elles sont égales à 0 et avec %lld idem ....

    Je travaille sous Codeblock 8.02

    Sinon pour avoir une float très grand, on utilise bien les long double ? et pour les afficher c'est bien %lf ?

    merci

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Yunchi Voir le message
    Sinon pour avoir une float très grand, on utilise bien les long double ? et pour les afficher c'est bien %lf ?
    D'abord float est masculin..


    Ensuite, qu'appelles-tu un "float très très grand" ?

    La notation e ne te convient pas ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Par défaut
    Je ne connais pas la notation e

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Par défaut
    En rétrogradant mes variables en long int ou int et en réduisant le temps de ma simulation ( les valeurs sont plus petites ) et avec un affichage en %ld et %d, ça marche sans problème.

    Est-ce que le type long long int avec affichage %llu ( ou %lld ?) pose problème dans certaines situations ?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    float f=1000000.0 ;
     
    printf ( "Valeur %e\n",f);
    sortie :


  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Par défaut
    Ah ok e c'est pour l'écriture scientifique, je ne connaissais pas : /

    Pour ma part je réinjecte les valeurs dans excel donc je ne sais pas si ça convient

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Yunchi Voir le message
    J'ai certaines variables de type long long int et lorsque je fais des fprintf dans un fichier avec %lld, j'ai des valeurs négatives et mes variables sont pourtant positives. En essayant avec %llu, ça a l'air cohérent. Le problème vient aussi du fait que certains de mes variables sont négatives et du coup avec %llu elles sont égales à 0 et avec %lld idem ....
    C'est pas bien clair. Si tes variables ne sont que positives ou nulles, utilise unsigned long long et "%llu". Si elles peuvent être négatives, utilise long long et "%lld". Il faut être cohérent.
    Sinon pour avoir une float très grand, on utilise bien les long double ? et pour les afficher c'est bien %lf ?
    Non. C'est "%Lf", mais ce n'est pas supporté par toutes les implémentations. Pour les float et le double, c'est "%e", "%f" ou "%g".

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 129
    Par défaut
    En fait, au début j'avais que des long long int et je mettais %lld pour une sortie. Mais les valeurs n'étaient pas bonnes du tout. Certaines valeurs étaient à 0 et d'autres valeurs qui devaient être positives prennaients des valeurs négatives.

    [Edit] Bon j'ai fais quelques tests :

    Avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    unsigned long long int temps_dans_etat[4];
     
    fprintf(divers,"%llu;%llu;%llu;%llu\n",temps_dans_etat[0],temps_dans_etat[1],temps_dans_etat[2],temps_dans_etat[3]);
    Dans mon fichier j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    3476962399;0;150000000;0
    Et avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    long long int temps_dans_etat[4];
     
    fprintf(divers,"%lld;%lld;%lld;%lld\n",temps_dans_etat[0],temps_dans_etat[1],temps_dans_etat[2],temps_dans_etat[3]);
    Dans mon fichier j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    3476962399;0;150000000;0
    Par contre si je mets :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int temps_dans_etat[4];
     
    fprintf(divers,"%d;%d;%d;%d\n",temps_dans_etat[0],temps_dans_etat[1],temps_dans_etat[2],temps_dans_etat[3]);
    Dans mon fichier j'ai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -8112348239;150000000;20000000;16580000
    Les valeurs que je devrais avoir sont plus ou moins:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -3476962399;150000000;20000000;16580000

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

Discussions similaires

  1. problème avec le type long long
    Par fred_sell dans le forum Débuter
    Réponses: 10
    Dernier message: 15/06/2009, 12h48
  2. Problème avec unsigned long long
    Par spiner900 dans le forum Débuter
    Réponses: 2
    Dernier message: 19/02/2009, 20h37
  3. Réponses: 7
    Dernier message: 04/01/2007, 22h31
  4. Problème avec l'affichage de souris INT 33,01h
    Par belgampaul dans le forum Assembleur
    Réponses: 7
    Dernier message: 07/12/2004, 21h37
  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