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 :

Pourquoi ce message d'erreur ?


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 196
    Points : 37
    Points
    37
    Par défaut Pourquoi ce message d'erreur ?
    bonjour,
    Je me suis contenté de copié coller ce code du bouquin que j'ai entre les mains et de le compiler avec gcc donc a priori pas d'erreur possible .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #include <stdio.h>
     
    int main()
    {
        char c = 'c';
        int i = 123;
        float f = 98.6;
        double d = 6.022E23;
     
        printf("char\t%u\n",sizeof(c));
        printf("int\t%u\n",sizeof(i));
        printf("float\t%u\n",sizeof(f));
        printf("double\t%u\n",sizeof(d));
        return(0);
    }
    Et pourtant , j'ai ce message d'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ~/Bureau/progEssais$ gcc essai5.c -o essai5Compile
    essai5.c: In function ‘main’:
    essai5.c:10:20: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int[-Wformat=]
         printf("char\t%u\n",sizeof(c));
                       ~^
                       %lu
    essai5.c:11:19: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int[-Wformat=]
         printf("int\t%u\n",sizeof(i));
                      ~^
                      %lu
    essai5.c:12:21: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int[-Wformat=]
         printf("float\t%u\n",sizeof(f));
                        ~^
                        %lu
    essai5.c:13:22: warning: format ‘%u’ expects argument of type ‘unsigned int’, but argument 2 has type ‘long unsigned int[-Wformat=]
         printf("double\t%u\n",sizeof(d));
                         ~^
                         %lu
    chris@mlp:~/Bureau/progEssais$

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 291
    Points : 4 941
    Points
    4 941
    Billets dans le blog
    5
    Par défaut
    Bonjour.

    Ce ne sont pas des erreurs mais des avertissements.

    Tu veux afficher des données de type unsigned int alors que les variables transmises sont de type long unsigned int. Il y a donc un risque que l’affichage soit erroné.

    Non pas utiliser %u il faut %lu dans tous tes printf ().

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 113
    Points : 32 960
    Points
    32 960
    Billets dans le blog
    4
    Par défaut
    - les bouquins ne sont pas exempts d'erreurs
    - de quand date ton bouquin ? le langage évolue et les compilateurs également, et plutôt dans le bon sens puisque certains étaient particulièrement laxistes
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 196
    Points : 37
    Points
    37
    Par défaut
    Tous dabord , merci tous les deux de votre aide . J'utilise un livre qui va vous faire sourire , il s'agit de " apprendre a programmer en C pour les nuls " edité en 2014 , je devrai peut etre en changer . En attendant , l'auteur ne fait pas étalage de ses connaissance et sait se mettre a la porté du debutant et ca c'est plutot rare .

  5. #5
    Expert éminent
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 564
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 564
    Points : 7 640
    Points
    7 640
    Par défaut
    Bonjour,

    En fait, ni %u ni %lu ne sont à utiliser car suivant les compilateurs on aura size_t qui est unsigned ou bien size_t qui est long unsigned.
    Le format à utiliser depuis C99 est %zu qui correspond exactement à un type size_t sachant s'adapter à sa taille. L'auteur n'a pas eu le temps de lire la norme sortie en 1999 pour rédiger son cours en 2014.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 677
    Points : 30 965
    Points
    30 965
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par chris7522 Voir le message
    je devrai peut etre en changer
    En général, les livres "pour les nuls" sont remarquablement bien fait. Cela n'empêche bien évidemment pas le livre de se périmer comme le décrit si bien Bousk mais pour une "initiation" (même poussée) ce n'est pas trop grave (et en plus ça forme aussi de devoir corriger un code qui se fait vieux).

    Plus tard effetivement, quand tu auras pigé les principes généraux du C, tu pourras taper dans des livres qui vont plus en profondeur dans certains détails...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Deficient visuel
    Inscrit en
    Mai 2019
    Messages
    196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Deficient visuel

    Informations forums :
    Inscription : Mai 2019
    Messages : 196
    Points : 37
    Points
    37
    Par défaut
    Merci a tous de votre aide et de vos conseils.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2019
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2019
    Messages : 3
    Points : 9
    Points
    9
    Par défaut
    Bon courage en tous cas le C au début c'est pas très évident

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

Discussions similaires

  1. [MySQL] Pourquoi mon message d'erreur ne s'affiche pas ?
    Par geeka dans le forum PHP & Base de données
    Réponses: 21
    Dernier message: 27/07/2014, 09h01
  2. Réponses: 6
    Dernier message: 17/05/2010, 11h50
  3. [VB2005] Messages d'erreur pourquoi ?
    Par julien7 dans le forum VB.NET
    Réponses: 2
    Dernier message: 03/03/2008, 17h54
  4. Pourquoi j'ai ce message d'erreur?
    Par ivory972 dans le forum Langage
    Réponses: 11
    Dernier message: 29/10/2007, 15h27
  5. [C# 2.0/NHibernate] Pourquoi ce message d'erreur ?
    Par margagn dans le forum NHibernate
    Réponses: 2
    Dernier message: 09/01/2007, 13h57

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