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

Affichage des résultats du sondage: Quels types utilisez vous ?

Votants
9. Vous ne pouvez pas participer à ce sondage.
  • char, short, int, ...

    4 44,44%
  • int8_t, int16_t, int32_t, ...

    0 0%
  • Les deux.

    5 55,56%
Langage C++ Discussion :

Nom des types de variables (char vs int8_t), qu'utilisez-vous ?


Sujet :

Langage C++

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2010
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 73
    Points : 90
    Points
    90
    Par défaut Nom des types de variables (char vs int8_t), qu'utilisez-vous ?
    Salut à tous,

    Cela fait quelques années que je programme en C++ et je trouve de plus en plus "illogique" d'utiliser les noms de types de bases comme "char" ou "unsigned long long" à la place de "int8_t" ou "uint64_t" (dans la mesure du possible, j'ai lu qu'il valait mieux utiliser "char" pour des std::string par exemple).
    Je me souviens de mes premiers pas dans le langage et je pense que j'aurais préféré avoir des explications avec des intN_t plutôt qu'avec des char/short/int/long long qui ne sont pas vraiment claire pour le coup.

    Utilisez-vous uniquement l'un, l'autre ou les deux ?
    Et pour quelle(s) raison(s) ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    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 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Salut,

    dans la très grande majorité du code, j'utilise les types "simples" : char, int, unsigned int, float, std::string. Avec ça, je couvre ~95% de ce que je souhaite faire.
    Quand je fais du code bas niveau, moteur, ou avec des restrictions mémoires plus strictes / nécessités de tailles fixes, alors j'utilise mes propres allias int8, int16, etc..

    Si tu veux utiliser int8_t et consors, je te conseillerai de faire des typedef dessus, parce qu'il me semble qu'ils dépendent de la plateforme.
    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.

  3. #3
    Expert confirmé

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Points : 4 551
    Points
    4 551
    Par défaut
    Les types scalaires de taille fixe sont utiles dans le cas où on souhaite fixer la taille des données. Exemple : dans un structure de donnée publique.

    Les types scalaire de taille non fixe (char, int...) sont utile lorsque fixer la taille des données n'a pas d'intérêt sémantique immédiat. Exemple : quel est l'intérêt de connaître sizeof(std::size_t) ?
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

  4. #4
    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
    - normalement j'utilise char, wchar_t pour les caracteres, signed/unsigned char, short, int, long long pour les entiers.

    - uintptr_t, intmax_t et uintmax_t ont leur utilite intrinseque.

    - les types a taille fixe sont utiles quand ils correspondent a des contraintes l'exterieures. (Cependant, attention au boutisme et au padding qui font que beaucoup d'utilisation n'apportent pas la portabilite attentue). A mon sens, pour des contraintes internes, seuls les non-signes quand il faut un comportement cyclique a une valeur fixee le sont.

    - les types a taille minimale (intfastXXX, instleatXXX) sont utiles quand on a des contraintes internes.

    - tout ces types sont des typedefs, attention aux surcharges
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Ne pas oublier que l'implémentation est libre de définir char comme signed char ou unsigned char...

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Citation Envoyé par Bousk Voir le message
    Si tu veux utiliser int8_t et consors, je te conseillerai de faire des typedef dessus, parce qu'il me semble qu'ils dépendent de la plateforme.

    (u)intXX_t sont dans la norme C99 ( stdint.h qu'on peut réutiliser en C++) ainsi que dans C++11.

  7. #7
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Ils ne sont pas garantis par la norme. Ils y sont listés, mais pas garantis.
    Sinon, j'utilise bien plus souvent les uint*_t que les int*_t pour les interfaces.
    Et beaucoup les size_t aussi.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  8. #8
    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 Luc Hermitte Voir le message
    Ils ne sont pas garantis par la norme. Ils y sont listés, mais pas garantis.
    Les variantes 8, 16, 32, 64 de _least_ et _fast_ sont garanties exister (du moins en C99, j'ai pas verifie si la garantie avait ete conservee en C++).

    Et beaucoup les size_t aussi
    Il ne fait pas partie de la serie (il date de C90).
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  9. #9
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Seuls les least et fast sont garantis.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  10. #10
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Qu'entends-tu exactement par garantis ?

  11. #11
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    int_(least|fast){n}_t sont garantis par la norme : les compilos doivent les proposer s'ils veulent être conformes
    int_{nombre}_t sont listés dans la norme comme "dites, les compilos, si vous pouviez me définir cette série là, ça serait cool de votre part, sinon tant pis, c'est pas grave je me débrouillerai autrement"
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  12. #12
    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 Luc Hermitte Voir le message
    int_(least|fast){n}_t sont garantis par la norme : les compilos doivent les proposer s'ils veulent être conformes
    Pour 8, 16, 32, 64. Pas pour 24, 36 ou 40.

    int_{nombre}_t sont listés dans la norme comme "dites, les compilos, si vous pouviez me définir cette série là, ça serait cool de votre part, sinon tant pis, c'est pas grave je me débrouillerai autrement"
    Ben oui, des types a tailles fixes, c'est difficile de les definir si on n'en dispose pas (et pour 8, 16, 32, 64, si on en dispose c'est obligatoire de les definir).
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

  13. #13
    Expert éminent sénior
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2003
    Messages : 5 275
    Points : 10 985
    Points
    10 985
    Par défaut
    Citation Envoyé par Jean-Marc.Bourguet Voir le message
    (et pour 8, 16, 32, 64, si on en dispose c'est obligatoire de les definir).
    La seule info que j'ai, c'est le §18.4.1 qui contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    namespace std {
        typedef signed integer type int8_t; // optional
    ...
    Je n'ai pas vu de mention de l'obligation à les définir si on en dispose sur la plateforme.

    EDIT: cela a l'air d'être indiqué dans la norme C99 pour le coup.
    Blog|FAQ C++|FAQ fclc++|FAQ Comeau|FAQ C++lite|FAQ BS|Bons livres sur le C++
    Les MP ne sont pas une hotline. Je ne réponds à aucune question technique par le biais de ce média. Et de toutes façons, ma BAL sur dvpz est pleine...

  14. #14
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 764
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 764
    Points : 2 705
    Points
    2 705
    Par défaut
    Dans la norme C99, il est dit :

    These types are optional.
    However, if an mplementation provides integer types withwidths of 8, 16, 32, or 64 bits, no padding bits, and (for the signed types) that have a two’s complement representation, it shall define the corresponding typedef names.

  15. #15
    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 Luc Hermitte Voir le message
    La seule info que j'ai, c'est le §18.4.1 qui contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    namespace std {
        typedef signed integer type int8_t; // optional
    ...
    Je n'ai pas vu de mention de l'obligation à les définir si on en dispose sur la plateforme.

    EDIT: cela a l'air d'être indiqué dans la norme C99 pour le coup.
    Oui, c'est la que j'ai du remonter, la norme C++ renvoyant a celle du C.
    Les MP ne sont pas là pour les questions techniques, les forums sont là pour ça.

Discussions similaires

  1. [Turbo Pascal] Créer des types de variables numériques en Turbo Pascal
    Par INDEPTEKNO dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 05/07/2008, 22h38
  2. Comparer des type de variables
    Par Zachs dans le forum VB.NET
    Réponses: 5
    Dernier message: 19/03/2008, 08h42
  3. Extension des Types de Données(CHAR,CLOB)
    Par blackstreet dans le forum Oracle
    Réponses: 9
    Dernier message: 28/04/2006, 22h39
  4. Gestion des types de variables en Assembleur
    Par AsmCode dans le forum Assembleur
    Réponses: 13
    Dernier message: 17/10/2005, 20h34
  5. Equivalent C -> Delphi des types de variables
    Par jobe dans le forum Langage
    Réponses: 3
    Dernier message: 13/09/2005, 23h21

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