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

Langage C++ Discussion :

Char vs unsigned char


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Inscrit en
    Septembre 2002
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Par défaut Char vs unsigned char
    Salut à tous,

    Cela fait de nombreuses années que je code en C++, mais comme beaucoup de personnes qui utilisent des outils pour travailler et même si l’on en connaît l’utilité ou le moment de s’en servir, on ne connaît pas le réel fonctionnement de celui-ci.

    J’essaye depuis peu de remédier a cela, en reprenant la base de C++ et de comprendre le fonctionnement de celui-ci.

    La question que je me pose, c’est, quel est l’intéret du unsigned char par rapport au signes char.

    Je peux le comprendre pour un int d’avoir une valeur négative vers une valeur positive, mais je n’en comprend pas le sens dans un char.
    Char est donc une valeur comprise entre -128 à 127 alors que le unsigned char est de 0 à 255.

    Mais encore ???

    Pourriez-vous m’éclairer ?

    Je comprend vite, mais il faut m’expliquer longtemps

    Merci.

  2. #2
    Expert confirmé
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 226
    Par défaut
    Il me semble que la taille du char d’après la norme indique juste qu'il puisse faire 1 byte au minimum , mais rien n’empêche de faire plus

    Citation Envoyé par kaygee Voir le message
    Mais encore ???
    Mais encore c'est tout , oui le unsigned char est assez rare d'utilisation pour ma part , j'utilise un unsigned char quand je représente une image matriciel mais je me souviens pas de l'utiliser plus que ça.
    (et puis sur un processeur 8/ ou 16 bits si on veut garder un compatibilité le char est un bon moyen).

  3. #3
    Membre très actif
    Inscrit en
    Septembre 2002
    Messages
    270
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 270
    Par défaut
    Merci pour ta réponse, en fait j'ai eu l'occasion de l'uyiliser a plusieur reprise sur des fonction d'encryption decryption qui m'avait ete fournie.

    C est un peu le but de ma demarche, pourquou un unsigned.

  4. #4
    Expert confirmé
    Avatar de Luc Hermitte
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2003
    Messages
    5 287
    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 287
    Par défaut
    Alors, sizeof(char) == 1 byte, toujours!
    Le nombre de bits d'un char est donné par `CHAR_BIT`. Depuis relativement peu de temps c'est garanti >= 8.
    Corollaire, la notion de byte est dépendante de la machine/OS courante, et c'est différent d'un octet donc.

    Ensuite, char est garanti de donner des valeurs entre 0 et 127. signed char entre -128 et +127, unsigned char entre 0 et 255. Ce sont trois types différents.

    Après il y a d'autres propriétés. modulos et décalages sont spécifiés sur les non-signés uniquement -- propriétés pouvant s'avérer importantes quand on manipule des données binaires.
    Les overflow sont également spécifiés sur les non-signés -- ce qui a pour effet de bord qu'un compilo a plus de latitude pour optimiser i++ sur un signé que sur un non-signé.
    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...

  5. #5
    Membre émérite
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2012
    Messages : 381
    Par défaut
    De mémoire, sur les systèmes de fichiers FAT, l'attribut des fichiers est stocké dans un char non signé car il est utilisé comme un masque de bits : 1 bit pour les fichiers cachés, 1 bit pour le type dossier etc. Dans ce cas, utiliser une valeur signée n'a pas de sens.

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Il y a une autre subtilité, la norme exige que char soit un type dont la représentation mémoire et l'alignement soit le même que signed char ou unsigned char, tout en étant un type distinct des deux.

    Fonctionnellement, char est le type à utiliser pour représenter un atome de texte, un "caractère", tandis que signed char et unsigned char sont deux types numériques.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 16/07/2008, 11h01
  2. [Clé de registre] Conversion char* vers unsigned char*
    Par The Lord of Nesquik dans le forum C
    Réponses: 7
    Dernier message: 03/07/2006, 23h30
  3. Types : char vs. unsigned char
    Par Herode dans le forum C++
    Réponses: 3
    Dernier message: 15/02/2006, 21h39
  4. vector<unsigned char> et unsigned char* : conversion ?
    Par zax-tfh dans le forum SL & STL
    Réponses: 5
    Dernier message: 15/01/2006, 10h43
  5. char et unsigned char
    Par jobherzt dans le forum C++
    Réponses: 8
    Dernier message: 11/02/2005, 00h24

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