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

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Invalidité
    Inscrit en
    mai 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Invalidité

    Informations forums :
    Inscription : mai 2019
    Messages : 29
    Points : 9
    Points
    9

    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
    Membre expert
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    février 2008
    Messages
    2 063
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Côte d'Or (Bourgogne)

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

    Informations forums :
    Inscription : février 2008
    Messages : 2 063
    Points : 3 990
    Points
    3 990
    Billets dans le blog
    4

    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 ().
    Utilisation de Glade avec Gtk+ - N'oubliez pas de consulter les FAQ Gtk et les cours et tutoriels Gtk

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Network game programmer
    Inscrit en
    juin 2010
    Messages
    5 942
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : juin 2010
    Messages : 5 942
    Points : 26 370
    Points
    26 370

    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
    Futur Membre du Club
    Homme Profil pro
    Invalidité
    Inscrit en
    mai 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Invalidité

    Informations forums :
    Inscription : mai 2019
    Messages : 29
    Points : 9
    Points
    9

    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 confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    décembre 2015
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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 : 931
    Points : 4 773
    Points
    4 773

    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
    7 277
    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 : 7 277
    Points : 20 732
    Points
    20 732
    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 «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Invalidité
    Inscrit en
    mai 2019
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Invalidité

    Informations forums :
    Inscription : mai 2019
    Messages : 29
    Points : 9
    Points
    9

    Par défaut

    Merci a tous de votre aide et de vos conseils.

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

Discussions similaires

  1. Pourquoi mon message d'erreur ne s'affiche pas ?
    Par geeka dans le forum PHP & MySQL
    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