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 :

Mécanique des variables de type char


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut Mécanique des variables de type char
    Bonjour,


    Quelle est le mécanisme qui permet à une variable de type char de pouvoir prendre 256 caractères sur un seul octet?

    Je m'explique:


    1 octet représente une combinaison de bits , si on assigne la combinaison 46 à une variable de type char elle ne peut donc plus recevoir une autre combinaison, or il est possible d'assigner 256 caractères à une variable de type char , donc 256 combinaisons , comment fonctione ce mecanisme dit chaine de caractère?

  2. #2
    Expert confirmé

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 033
    Billets dans le blog
    12
    Par défaut
    Je crois que tu te méprends.
    Un char a 256 valeurs possibles, mais pas 256 valeurs en même temps.
    Les chaînes de caractères ne sont que des suites de char représentant chacun un caractère de la chaîne.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 488
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Quelle est le mécanisme qui permet à une variable de type char de pouvoir prendre 256 caractères sur un seul octet?
    Non, une variable de type char peut prendre UNE valeur parmi 256 valeurs possibles.

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    Salut,

    il n'y a rien de tel.
    Un octet, 8 bits, ça prend une valeur entre 0 (tous les bits à 0) et 255 (tous les bits à 1). Une chaîne de caractères, c'est une chaîne d'octets, un tableau, plusieurs caractères/octets.
    Le langage permet de réserver une zone mémoire contigüe et de pouvoir utiliser l'opérateur [] pour récupérer des offset depuis la première zone mémoire.
    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.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2016
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2016
    Messages : 12
    Par défaut
    merci de vos réponses.

    Alors on est d'accord en réalité dans le cas d'une chaine de caractères de 10 caracteres admettons , 10 octets sont reservés en mémoire comme dans le cas d'un tableau et lors de la sortie std , les octets sont chainé dans l'ordre à l'affichage.


    Donc dans le cas d'une chaine de caractère de 256 caractères , un tableau de 256 octets est réservé en mémoire pour une variable.

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 147
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 147
    Billets dans le blog
    4
    Par défaut
    oui, et ? mis à part que ce n'est pas vraiment ce que tu racontes dans ton premier message, ou alors très mal puisque nous sommes 3 à avoir compris de travers.
    Et ce n'est pas une variable de 256 octets, c'est une zone mémoire sur laquelle pointe une variable (de type pointeur donc - cap'tain obvious is here!)
    L'affichage parcourt juste tout jusqu'à ce qu'il trouve un caractère de fin de chaîne \0. D'autres langages ont misé sur le fait d'insérer en en-tête la longueur de la chaîne (Pascal)
    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.

  7. #7
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Salut,

    pour une chaîne de 10 caractères 11 octets sont réservés (cf. null terminated string). Et ce dans le cas où on parle de "tableau de char". Si on parle de "chaîne de caractères" au sens général ça peut prendre plus de place que ça (si charset UTF-8 par exemple). Et pour être précis sur les termes je dirais que les caractères ne sont pas "chaînés" mais dans des zones mémoires contigues (mais t'avais compris le truc puisque tu dis toi-même "comme [..] un tableau").

Discussions similaires

  1. Réponses: 16
    Dernier message: 12/11/2008, 20h36
  2. Réponses: 22
    Dernier message: 03/01/2008, 22h42
  3. [VB] gestion des couleurs des variables de type string
    Par landry005 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 28/03/2006, 14h36
  4. variable de type char
    Par Yoshio dans le forum C
    Réponses: 18
    Dernier message: 23/02/2006, 10h48
  5. Réponses: 2
    Dernier message: 19/01/2006, 18h58

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