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 :

quelqu'un a déjà vu un compilateur avec des "char" de plus qu'un octet ?


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Par défaut quelqu'un a déjà vu un compilateur avec des "char" de plus qu'un octet ?
    Voila tout est dans le titre je pense.

    un char, caractère vaut un octet sur tous les systèmes que je connaisse (ça en fait pas beaucoup). Pourtant j'ai lu que le standard C++ ne spécifiait rien sur la taille exacte de char (si ce n'est que c'est le plus petit il me semble).

    Je me dis que ça doit être en cas d'utilisation du C++ autrement que pour des ordinateurs personnels (je pense à des machines, robots de fabrications, etc...), selon les contraintes des machines.


    Mais est ce que je peux raisonnablement supposer que si mon code est destiné uniquement à être exécuté sur des ordinateurs avec systèmes d'exploitations courants ?

  2. #2
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Par définition, sizeof(char) == 1.

    Ce qui ne signifie pas du tout que la taille d'un char est un octet (=8 bits), juste que l'unité de base de mesure de taille mémoire est le nombre de char équivalent. Une machine où un char ferait 10 bits aurait tous ses objets avec une taille multiple de 10 bits.

    Il y a réellement des machines avec des char de plus de 8 bits, mais je n'en connais pas personellement. Après, tout dépend de la définition de courant.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  3. #3
    Membre expérimenté
    Profil pro
    Dev
    Inscrit en
    Décembre 2007
    Messages
    191
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dev

    Informations forums :
    Inscription : Décembre 2007
    Messages : 191
    Par défaut
    Par définition, sizeof(char) == 1.
    ah ben oué, tout d'un coup c'est plus simple comme ça. Merci pour cette précision.

  4. #4
    Expert éminent
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 644
    Par défaut
    Salut,

    Il est à noter que la définition d'un "char" est suffisemment large pour permettre pas mal d'implémentation différente: un groupe de bits permettant de représenter les caractères utiles...

    Dés lors, si tu décidais de te contenter des 10 chiffres, des lettres exclusivement majuscules, de l'espace, et d'une partie seulement des 32 caractères "invisibles" de la table ANSI (il ne faudrait en supprimer que 4 ), tu pourrais très bien te contenter d'un char codé sur 6 bits...

    D'ailleurs, il fut un temps où les processeurs (mais bon... on était encore loin d'arriver ne serait-ce qu'aux 3x86 ) travaillaient sur des groupes de 6 bits, et il me semble que, chez eux, un char était donc codé ainsi

    Pour la petite histoire, c'est à cause de ces processeurs que l'on a commencé à utiliser la notation octale... qui a traversé "historiquement" les générations
    A méditer: La solution la plus simple est toujours la moins compliquée
    Ce qui se conçoit bien s'énonce clairement, et les mots pour le dire vous viennent aisément. Nicolas Boileau
    Compiler Gcc sous windows avec MinGW
    Coder efficacement en C++ : dans les bacs le 17 février 2014
    mon tout nouveau blog

  5. #5
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Il y a deux classes d'implementations qui utilisent des char de plus de 8 bits (une implementation conforme doit avoir des char d'au moins 8 bits). Potentiellement celles pour des machines historiques (genre PDP-10, mais je ne connais qu'un compilateur C; ah oui vers le debut des annees 2000, quelqu'un avait porte gcc, je ne sais plus si g++ faisait partie du port ou pas) ou on aurait vraissemblablement des valeurs bizarres comme 9 ou 12 -- ou meme 6 ou 7 dans des modes non conformes mais qui seraient quand meme utiles.

    Deuxieme classe, c'est pour des processeurs plus destines au traitement du signal. Certains de ces processeurs sont adressables par mot et on se retrouve facilement avec un char=un mot parce que implementer plusieurs char par mot (comme on le ferait naturellement sur les machines historiques) ne servirait pas a grand chose.

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

Discussions similaires

  1. Quelques commandes utiles de l'IOS Cisco avec des regexp
    Par Invité dans le forum Contribuez
    Réponses: 0
    Dernier message: 12/03/2014, 12h11
  2. Réponses: 4
    Dernier message: 01/08/2011, 11h24
  3. Select et insert avec des caracteres speciaux (quote ')
    Par Paco75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/10/2006, 14h59
  4. [Fortran 90] Compilateur avec doc en français ?
    Par leroyf dans le forum Fortran
    Réponses: 1
    Dernier message: 15/03/2006, 19h36
  5. [Kylix 3] Probleme de compilateur
    Par iwky dans le forum EDI
    Réponses: 1
    Dernier message: 11/12/2004, 19h40

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