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 avec sizeof


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Points : 39
    Points
    39
    Par défaut problème avec sizeof
    j'ai créé un programme sizeof et il considère float et double comme une erreur comment ce fait-il???
    plus precisement c'est mon compilateur qui le considère comme une erreur.

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Un petit bout de code et le message d'erreur du compilateur s'il te plait. Je ne suis pas un devin et je n'ai pas ma boule de cristal.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Points : 39
    Points
    39
    Par défaut
    je ne l'ai pas sur moi...

    je sais juste que j'utilise #include<stdio.h> et #include<stdlib.h>

    int(main) et printf()avec la "pseudo-fonction" sizeof avec tout le blabla dedans ...

    a part ça je ne m'en rapelle plus

  4. #4
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    He bien reviens nous voir quand tu as tout cela, sinon, comment veux tu que l'on t'aide
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  5. #5
    Invité(e)
    Invité(e)
    Par défaut
    Bonjour,
    Citation Envoyé par Porteuris Voir le message
    la "pseudo-fonction" sizeof
    sizeof n'est pas une pseudo fonction, mais un opérateur, qui renvoie un size_t.

    On l'utilise comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    /* pour un type*/
    size_t sizeof_float = sizeof (float);
     
    /* pour une variable (foo est une variable de type quelconque) */
    size_t sizeof_foo = sizeof foo;
    Si ton compilateur renvoie une erreur, c'est que tu utilise mal sizeof.
    Dernière modification par Invité(e) ; 09/12/2008 à 10h19.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Points : 39
    Points
    39
    Par défaut
    Et comment ont utilise sizeof avec printf() pour afficher double et float???

  7. #7
    Invité(e)
    Invité(e)
    Par défaut
    Citation Envoyé par Porteuris Voir le message
    Et comment ont utilise sizeof avec printf() pour afficher double et float???
    Relis la question, elle n'a pas de sens.

    Si tu veux afficher float ou double, sizeof n'a pas à être utilisée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    float a_float = 1.5f;
    printf("un float: %f\n", a_float);

    Si tu veux afficher la taille du type float resp. double, il faut afficher sizeof(float) resp. sizeof(double) qui est de type size_t.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("sizeof(float) = %zd\n", sizeof(float));
    http://man.developpez.com/man3/printf.3.php

  8. #8
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par mabu Voir le message
    Si tu veux afficher la taille du type float resp. double, il faut afficher sizeof(float) resp. sizeof(double) qui est de type size_t.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    printf("sizeof(float) = %zd\n", sizeof(float));
    En C99, c'est %zd pour ssize_t et %zu pour size_t.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  9. #9
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Et sous Visual studio (toutes versions) et MinGW, c'est %Iu au lieu de %zu.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Et sous Visual studio (toutes versions) et MinGW, c'est %Iu au lieu de %zu.
    Ah, il me semblait que Microsoft utilisait le modèle LLP64 dans la version 64bits de son OS?
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  11. #11
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    Ah, il me semblait que Microsoft utilisait le modèle LLP64 dans la version 64bits de son OS?
    Justement: size_t est un type dit "memsize", donc un unsigned long long en mode 64 bits, un unsigned int (ou unsigned int __w64) en 32 bits. Ce à quoi correspond le format %Iu.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  12. #12
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Justement: size_t est un type dit "memsize", donc un unsigned long long en mode 64 bits, un unsigned int (ou unsigned int __w64) en 32 bits. Ce à quoi correspond le format %Iu.
    et depuis quand le code de format pour un unsigned long long est %lu?
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  13. #13
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 518
    Points
    41 518
    Par défaut
    Citation Envoyé par nicolas.sitbon Voir le message
    et depuis quand le code de format pour un unsigned long long est %lu?
    Depuis que ton navigateur utilise une police qui n'ajoute pas de sérifs au I majuscule.

    Le code de format pour un unsigned int __w64 est %z-minuscule-u en C99, mais %I-majuscule-u pour la CRT de Microsoft.
    La version 2005 de la CRT supporte %llu pour les unsigned long long (les anciennes versions ne supportaient que %I-majuscule-64u), mais c'est l'unique concession qu'ils ont faite au standard C99...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Depuis que ton navigateur utilise une police qui n'ajoute pas de sérifs au I majuscule.

    Le code de format pour un unsigned int __w64 est %z-minuscule-u en C99, mais %I-majuscule-u pour la CRT de Microsoft.
    La version 2005 de la CRT supporte %llu pour les unsigned long long (les anciennes versions ne supportaient que %I-majuscule-64u), mais c'est l'unique concession qu'ils ont faite au standard C99...
    Autant pour moi, effectivement j'avais mal lu. bref très décevant tout ça.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 79
    Points : 39
    Points
    39
    Par défaut


    j'ai trouver la solution à mon problème malgrés le charabia de la fin


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

Discussions similaires

  1. Problème avec malloc sizeof
    Par BATAK dans le forum Débuter
    Réponses: 10
    Dernier message: 06/04/2008, 12h21
  2. malloc : problème avec sizeof ?
    Par samplaid dans le forum C
    Réponses: 2
    Dernier message: 24/11/2007, 18h24
  3. problème avec sizeof
    Par PIL dans le forum C
    Réponses: 10
    Dernier message: 10/09/2006, 12h12
  4. Problème avec sizeof(...) : erreur de taille
    Par Invité dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 06/05/2006, 12h53
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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