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

  1. #1
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    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 943
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 943
    Points : 5 655
    Points
    5 655
    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.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    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 : 46
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    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 régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    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 éminent sénior
    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
    Points : 13 926
    Points
    13 926
    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é
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    je ne sais plus si unsigned long long existe, mais si c'est le cas, essaye ce type.

  8. #8
    Expert éminent sénior
    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
    Points : 13 926
    Points
    13 926
    Par défaut
    Citation Envoyé par salseropom Voir le message
    je ne sais plus si unsigned long long existe, mais si c'est le cas, essaye ce type.
    Si long long existe pour son compilateur, unsigned long long aussi
    Publication : Concepts en C

    Mon avatar : Glenn Gould

    --------------------------------------------------------------------------
    Une réponse vous a été utile ? Remerciez son auteur en cliquant le pouce vert !

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    un petit getch(); s'impose aussi apres le printf
    cordialement!

  10. #10
    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 : 46
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par Pugebad Voir le message
    un petit getch(); s'impose aussi apres le printf
    cordialement!
    Préfère un getchar, getch n'est pas standard donc pas portable !
    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 !

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    excuse moi franck.h, je suis etudiant en info et depuis le debut on utilise getch()
    quelle est la diff. avec getchar() ?

    de plus , je narrive pas a voir les diff. entre le C et le C++

  12. #12
    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 : 46
    Localisation : France, Haut Rhin (Alsace)

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par Pugebad Voir le message
    excuse moi franck.h, je suis etudiant en info et depuis le debut on utilise getch()
    quelle est la diff. avec getchar() ?
    getch viens il me semble de conio.h qui n'est que sur Windows. getchar fait partie de la bibliothèque standard, la fonction attend simplement un caractère quel qu'il soit, un peu comme le fait getch, sauf que getchar n'affiche pas de message type:
    Appuyez sur une touche pour continuer
    mais sachant ce que fait getchar, ce n'est franchement pas difficile à reproduire

    Citation Envoyé par Pugebad Voir le message
    de plus , je narrive pas a voir les diff. entre le C et le C++
    Bin le C est un langage procédural, le C++ bien que pouvant l'être également est avant tout un langage Orienté Objet mais je n'en suis pas du tout un spécialiste alors pour connaître des différences plus techniques, le mieux est de consulter le forum C++, je pense que tu peux y trouver nombreux fils de discussions à ce sujet
    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 !

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    getch() , vient bien de conio.h , je travail sous builder ...
    par contre getch() ne fait pas apparaitre " appuyer sur une touche pour continuer "


    et merci pour ces renseignements

  14. #14
    En attente de confirmation mail
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    133
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 133
    Points : 169
    Points
    169
    Par défaut
    double soldeBanque = 6500000000.0 ;

  15. #15
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    Par défaut
    bonsoir

    la solution de Zartan a marché 1000*merci mais sincèrement il est extrêmement difficile de cerner à quoi sert tel ou tel commande en car la pratique reste des fois bien loin de la théorie mais j'y crois encore

  16. #16
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par abdelilah Voir le message
    bonsoir

    la solution de Zartan a marché 1000*merci mais sincèrement il est extrêmement difficile de cerner à quoi sert tel ou tel commande en car la pratique reste des fois bien loin de la théorie mais j'y crois encore
    Pour le cas du choix des variables il faut que tu regardes la taille en octets. Ensuite tu regardes quelle taille au maximum tu peux stocker dessus, et tu fais ton choix en fonction. C'est tout
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  17. #17
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    Par défaut
    Envoyé par Pugebad :
    un petit getch(); s'impose aussi apres le printf
    cordialement!
    je suis complètement ignorant je l'avoue mais ou se trouve l'intérêt puisque dans notre cas l'affichage reste à l'écran ? (je sous entend qu'on exécute le tout en console).

  18. #18
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    Par défaut
    zooper skyrunner

    peux tu me montrer la méthode concrètement.

    merciiis,que ça soit aujourd'hui ou demain je ne suis pas pressé ensuite il ne faut que j'abuse

  19. #19
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut
    Citation Envoyé par abdelilah Voir le message
    je suis complètement ignorant je l'avoue mais ou se trouve l'intérêt puisque dans notre cas l'affichage reste à l'écran ? (je sous entend qu'on exécute le tout en console).
    Ca évite que le fenêtre console se referme, mais c'est utile seulement si tu lances le programme en double-cliquant sur l'icône, si tu es comme moi et que tu lances le programme directement à partir de la console ça ne sert à rien.

    Citation Envoyé par abdelilah Voir le message
    zooper skyrunner

    peux tu me montrer la méthode concrètement.

    merciiis,que ça soit aujourd'hui ou demain je ne suis pas pressé ensuite il ne faut que j'abuse
    http://c.developpez.com/faq/?page=ty...S_taille_types

    Ce qu'il faut savoir c'est que ce sont des tailles minimales énoncées par la norme.
    Actuellement, la taille d'un int est en général de 4 octets (32 bits donc).

    Pour connaitre la taille tu peux utiliser l'opérateur sizeof.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("%d\n", sizeof(int));
    Remplace int par le type voulu.

    De plus pour connaitre la taille que le type peut contenir tu as des constantes définies dans limits.h et float.h
    http://en.wikipedia.org/wiki/Limits.h
    http://en.wikipedia.org/wiki/Float.h
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  20. #20
    Membre régulier
    Inscrit en
    Décembre 2006
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 165
    Points : 76
    Points
    76
    Par défaut
    bonsoir

    je suis à quelques minutes d'un cour j'ai vu ta réponse merci Skyrunner, j'aurais après inchalllah

    le temps de les analyser et de les assimiler mais j'ignorait tout ceci ,vous savez on dervrait vraiment vous

    payer à http://www.developpez..com

    merciiiiiis.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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