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 :

convertir integer en string


Sujet :

C

  1. #81
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par stephl
    Merci pour toutes ces explications. J'aurai au moins appris que l'on peut utiliser & devant un nom de tableau, même si je continuerai à éviter de le faire (chacun ses goûts).
    Ce n'est pas tant une question de gout que de ce que tu as besoin de faire.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  2. #82
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Ce n'est pas tant une question de gout que de ce que tu as besoin de faire.
    Je ne vois pas de cas où je serais obligé d'obtenir l'adresse d'un tableau.

  3. #83
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par stephl
    La valeur de l'expression "d" est indépendante de l'expression (plus large) dans laquelle elle intervient. La valeur de l'expression "d" est toujours 5.1; le cast implicite intervient seulement après. Je crois que je ne saisis pas la différence que vous faites entre valeur de variable et valeur d'expression. C'est trop abstrait pour moi.
    Quand on parle de conversion (ici, implicite double -> int), c'est la valeur servant à initialiser le paramètre qui est convertie, pas la valeur de la variable originale...
    Pas de Wi-Fi à la maison : CPL

  4. #84
    Expert éminent

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Points : 6 911
    Points
    6 911
    Par défaut
    Citation Envoyé par stephl
    Je ne vois pas de cas où je serais obligé d'obtenir l'adresse d'un tableau.
    J'ai donne un exemple plus haut dans cette discussion:
    http://www.developpez.net/forums/sho...0&postcount=57

    Naturellement, on peut aussi dupliquer le code.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  5. #85
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Ajoute -pedantic-errors a tes options de gcc.
    Si tu veux, mais le warning est suffisant pour m'alerter d'un problème. Ici, c'est clairement une incompatibilité de type.
    Pas de Wi-Fi à la maison : CPL

  6. #86
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par stephl
    Merci pour toutes ces explications. J'aurai au moins appris que l'on peut utiliser & devant un nom de tableau, même si je continuerai à éviter de le faire (chacun ses goûts).
    On peut, mais ça a une autre signification. Ca sert notamment à initialiser un pointeur sur tableau.
    Pas de Wi-Fi à la maison : CPL

  7. #87
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par stephl
    Je ne vois pas de cas où je serais obligé d'obtenir l'adresse d'un tableau.
    Si tu dois manipuler des tableaux taille fixe, ça évite un paramètre. Type tableau recommandé (j'ai montré un exemple).
    Pas de Wi-Fi à la maison : CPL

  8. #88
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    J'ai donne un exemple plus haut dans cette discussion:
    http://www.developpez.net/forums/sho...0&postcount=57

    Naturellement, on peut aussi dupliquer le code.
    J'avais bien vu votre exemple (fort intéressant), cependant, c'est un exemple d'utilisation. Rien ne m'oblige à utiliser f(), et personnellement, je n'aurais pas coder de cette manière. Ce que je veux dire, c'est que je ne vois pas de situation où utiliser & devant un tableau s'impose.

  9. #89
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Si tu dois manipuler des tableaux taille fixe, ça évite un paramètre. Type tableau recommandé (j'ai montré un exemple).
    Si on connaît la taille des tableaux à l'avance et que la fonction de traitement est spécifique, je préfère considérer que la fonction a obtenu un pointeur et intégrer la taille du tableau dans la boucle.

  10. #90
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet
    Alors getCFromA(uu.a) n'est pas conforme tandis que getCFromU(uu) l'est.
    Peux-tu expliciter ?? je ne suis pas là...

    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  11. #91
    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 Emdel
    Par contre j'ai un problème avec le const. Il doit être mal placé...
    Je viens de tester avec Visual pour const, et j'ai ces deux prototypes qui compilent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void AfficherTableau(int (* const pcTab)[10]);
    void AfficherTableau(int const (* const pcTab)[10]);
    Edit: Et seul le second accepte un tableau const.

    Ce doit être le même problème que pour les const char * const *
    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. #92
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par stephl
    Si on connaît la taille des tableaux à l'avance et que la fonction de traitement est spécifique, je préfère considérer que la fonction a obtenu un pointeur et intégrer la taille du tableau dans la boucle.
    Et si tu décides de changer la taille de ton taibleau, et que plusieurs fonctions reçoivent un tel tableau en paramètre? Il y a un enjeu de maintenance évident là-derrière. Tu peux, comme l'a montré Emmanuel, utiliser un type tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef int int_a [10];
    et centraliser ainsi la définition de la taille de ton tableau. Un codage en dur rendrait la maintenance très fastidieuse.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  13. #93
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par mujigka
    Et si tu décides de changer la taille de ton taibleau, et que plusieurs fonctions reçoivent un tel tableau en paramètre? Il y a un enjeu de maintenance évident là-derrière. Tu peux, comme l'a montré Emmanuel, utiliser un type tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef int int_a [10];
    et centraliser ainsi la définition de la taille de ton tableau. Un codage en dur rendrait la maintenance très difficile.

    Thierry
    Pas si on utilise un #define pour la taille du tableau.

  14. #94
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par stephl
    Pas si on utilise un #define pour la taille du tableau.
    Tu as raison!
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  15. #95
    Membre éclairé Avatar de stephl
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2007
    Messages
    643
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2007
    Messages : 643
    Points : 771
    Points
    771
    Par défaut
    Citation Envoyé par mujigka
    Tu as raison!
    Après, je pense que c'est à chacun de voir ce qu'il préfère.

  16. #96
    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
    En fait, ça permet de s'assurer statiquement qu'on passe bien un tableau de la bonne taille et non un pointeur avec la taille pas loin.

    Mais ça montre sa vraie puissance avec le C++ (même si là, on passe plus souvent une référence qu'un tableau).
    Attention, c'est du gros C++ qui tâche, alors âmes sensibles s'abstenir:
    Code C++ : 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
    20
    21
    22
    //La fonction normale, comme on l'emploie en C :
    void EcrireDansTableau(int *tab, size_t n);
     
    //Ici, un template qui détermine statiquement la taille.
    //N est considéré comme une constante connue à la compilation.
    //La fonction appelle son amie en lui passant la taille.
    //Et comme elle sera sans doute inlinée par le compilo, aucun cout en performance.
    template< size_t N >
    void EcrireDansTableauPtr(int (*pTab)[N])
    {
       EcrireDansTableau(*pTab, N);
    }
     
    //Et ici, une fonction équivalente avec le tableau passé par référence
    //(plutôt qu'un pointeur) et le même nom.
    //Cela évite d'avoir à employer une syntaxe différente.
    //Voir à ce sujet la fonction Microsoft strcat_s().
    template< size_t N >
    void EcrireDansTableau(int (&tab)[N])
    {
       EcrireDansTableau(tab, N);
    }
    Et pour information, la version C++ de la macro ARRAYSIZE() de Microsoft repose sur ce principe (templates etc.) pour ne marcher que sur les tableaux (erreur de compilation si on lui passe un pointeur).

    PS1 : Voici l'adresse de la doc de strcat_s() :
    http://msdn2.microsoft.com/en-us/lib...x4(VS.80).aspx

    PS2 : Ici, je ne me suis pas amusé avec les const, une chose compliquée à la fois s'il vous plait!
    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.

  17. #97
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Médinoc
    En fait, ça permet de s'assurer statiquement qu'on passe bien un tableau de la bonne taille et non un pointeur avec la taille pas loin.

    Mais ça montre sa vraie puissance avec le C++ (même si là, on passe plus souvent une référence qu'un tableau).
    Attention, c'est du gros C++ qui tâche, alors âmes sensibles s'abstenir:
    Code C++ : 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
    20
    21
    22
    //La fonction normale, comme on l'emploie en C :
    void EcrireDansTableau(int *tab, size_t n);
     
    //Ici, un template qui détermine statiquement la taille.
    //N est considéré comme une constante connue à la compilation.
    //La fonction appelle son amie en lui passant la taille.
    //Et comme elle sera sans doute inlinée par le compilo, aucun cout en performance.
    template< size_t N >
    void EcrireDansTableauPtr(int (*pTab)[N])
    {
       EcrireDansTableau(*pTab, N);
    }
     
    //Et ici, une fonction équivalente avec le tableau passé par référence
    //(plutôt qu'un pointeur) et le même nom.
    //Cela évite d'avoir à employer une syntaxe différente.
    //Voir à ce sujet la fonction Microsoft strcat_s().
    template< size_t N >
    void EcrireDansTableau(int (&tab)[N])
    {
       EcrireDansTableau(tab, N);
    }
    Et pour information, la version C++ de la macro ARRAYSIZE() de Microsoft repose sur ce principe (templates etc.) pour ne marcher que sur les tableaux (erreur de compilation si on lui passe un pointeur).

    PS1 : Voici l'adresse de la doc de strcat_s() :
    http://msdn2.microsoft.com/en-us/lib...x4(VS.80).aspx

    PS2 : Ici, je ne me suis pas amusé avec les const, une chose compliquée à la fois s'il vous plait!
    Merci Médinoc pour cet exemple d'application intéressant!

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  18. #98
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Médinoc
    Je viens de tester avec Visual pour const, et j'ai ces deux prototypes qui compilent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void AfficherTableau(int const (* const pcTab)[10]);
    Oui, c'est ce que j'ai mis, mais je passe l'adresse d'un tableau non const et gcc rale. Pour moi, c'est pas logique et je soupçonne un bug de gcc (ce cas étant quand même hyper rare, je ne serais pas étonné).
    Pas de Wi-Fi à la maison : CPL

  19. #99
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par stephl
    Si on connaît la taille des tableaux à l'avance et que la fonction de traitement est spécifique, je préfère considérer que la fonction a obtenu un pointeur et intégrer la taille du tableau dans la boucle.
    Il faut donc un paramètre supplémentaire (ou une sentinelle)...
    Pas de Wi-Fi à la maison : CPL

  20. #100
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par stephl
    Pas si on utilise un #define pour la taille du tableau.
    Bof
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #undef N
    #define N 100
    Il y a des utilisateurs vicieux...
    Pas de Wi-Fi à la maison : CPL

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

Discussions similaires

  1. Convertir un type String en Integer VB-A
    Par sebeni dans le forum Général VBA
    Réponses: 1
    Dernier message: 09/05/2007, 16h18
  2. [VBScript] Convertir date en string
    Par rabi dans le forum VBScript
    Réponses: 4
    Dernier message: 26/12/2005, 11h26
  3. [jar] convertir URL en String
    Par c-top dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 22/11/2004, 11h19
  4. Integer ou string dans une DBGRID
    Par Yepazix dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/08/2004, 13h42
  5. Réponses: 6
    Dernier message: 14/02/2004, 14h01

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