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 :

double, long,float ,que de confusions.


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Par défaut double, long,float ,que de confusions.
    Bonjour

    suite à un quiz je me suis amusé à tester les formats d'affichage de printf,le malheur c'est que je ne vois une différence palpable entre ces types.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
    #include <stdlib.h>
     
    main()
     {
    double soldeBanque = 6500000000 ;
    printf("vous avez %ld dirhams en banque", soldeBanque);
    return 0;
     
     }
    Je n'arrive même pas à le compiler

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    abdel@ubuntu:~/dev-c$ gcc -o variables2 variables2.c 
    variables2.c: In function ‘main’:
    variables2.c:6: warning: integer constant is too large forlong’ type
    pouvez m'expliquer comment dois je formater printf et scanf car même en ayant tout en règle il y tjrs quelque chose qui cloche.

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 966
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 966
    Par défaut
    Hio,

    Il faut lire la doc, et utiliser les bons paramètres.

    Dons ton exemple, tu as un double, et tu demandes d'afficher un long int, d'où le warning.

    On en revient encore et toujours à ceci :

    La programmation, quel que soit le langage, n'est pas un jeu où on peut apprendre par la loi des essais et des erreurs.
    Il faut faire l'effort d'apprendre sérieusement, sinon autant s'abstenir définitivement.

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Par défaut
    Donc si je comprend bien il faut mettre :

    long int au lieu de double ?

  4. #4
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par abdelilah Voir le message
    Donc si je comprend bien il faut mettre :

    long int au lieu de double ?
    Bin tout dépend la façon dont laquelle tu veux afficher les données numériques. Si tu veux les afficher en virgule flottante, il faut utiliser le spécificateur %f (qui est aussi utilisé pour le type float) ou sinon %d pour le type int et %ld pour le type long int !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Par défaut
    justement c'est mon intention,mais je ne sais pas ce qui cloche j'ai repris le chapitre sur les variable et normalement cela doit marcher à moins que gcc ait fumé un pétard .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <stdio.h>
    #include <stdlib.h>
     
    main()
     {
    long int  soldeBanque = 6500000000 ;
    printf("vous avez %ld dirhams en banque", soldeBanque);
    return 0;
     
     }
    voici ce qu'il me dit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    abdel@ubuntu:~/dev-c$ gcc -o variables2 variables2.c 
    variables2.c: In function ‘main’:
    variables2.c:6: warning: integer constant is too large forlong’ type
    variables2.c:6: warning: overflow in implicit constant conversion
    j'y crois encore .

  6. #6
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Tu es trop riche et ta fortune (6 500 000 000) ne peut pas s'écrire sur un long qui probablement chez toi doit être limité à un peu plus de 2 milliards, ni sur un unsigned long limité à un peu plus de 4 milliards

    Solutions possibles :
    - Donne une partie de ta fortune aux pauvres jusqu'à entrer dans un unsigned long ou un long
    - Utilise long long si ton compilateur le supporte
    - sinon utilise double, mais tu risque d'avoir quelques erreurs dans tes calculs de quelques dirhams

    Dans tous les cas adapte le spécificateur de format %... au type utilisé

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

Discussions similaires

  1. Convertion String en double ou float
    Par superjaja dans le forum C#
    Réponses: 6
    Dernier message: 31/12/2007, 13h00
  2. conversion double/long possible?
    Par filor dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2007, 17h51
  3. différence entre double et float
    Par Maria1505 dans le forum C++
    Réponses: 2
    Dernier message: 03/01/2007, 05h16
  4. du double au float
    Par yvesall dans le forum C
    Réponses: 7
    Dernier message: 10/11/2006, 16h13
  5. prototype erf : double ou float ?
    Par nicolas.puiroux dans le forum C
    Réponses: 5
    Dernier message: 07/09/2006, 10h39

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