Salut a tous !
Je voudrais juste que dans t il y ai 255 et pas -1;
Merci d'avance .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char test=255; int t =(int)test; cout<<endl<<"test"<<t;
Salut a tous !
Je voudrais juste que dans t il y ai 255 et pas -1;
Merci d'avance .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char test=255; int t =(int)test; cout<<endl<<"test"<<t;
merci de prendre l'habitude d'utiliser la balise <CODE> (bouton #).
Salut,Par défaut, les valeur numériques entières sont considérées comme des valeurs signées.
C'est à dire qu'un des bit qui permet la représentation est alors appelé "bit de signe" et correspond à "+" lorsqu'il vaut 0 et à "-" lorsqu'il vaut 1.
L'intervalle des valeurs représentables par les différentes valeurs numériques est alors également réparti de part et d'autre de 0, ce qui fait que char test=255 correspond à -1.
Pour pouvoir représenter la valeur 255, il faut explicitement indiquer que tu veux utiliser une valeur non signée. Le bit de signe est alors utilisé pour représenter une nouvelle tranche de valeurs plutôt que + ou -, ce qui fait que l'intervalle des valeurs représentable commence à 0.
Ton code doit donc etre modifié pour que t soit considéré comme un entier non signé, sous la forme de
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char test=255; unsigned int t =(unsigned int)test; cout<<endl<<"test"<<t;
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
Petit détail : C'est globalement vrai, sauf pour char (car char est aussi un type entier) : char peut être équivalent soit à signed char, soit à unsigned char, au choix du compilateur. Du coup, une bonne habitude est d'écrire :
- char quand on parle de caractère, et qu'on se moque de la valeur numérique associée
- signed char quand on veut des entiers prenant peu de place à stocker et ne prenant que des petites valeurs
- unsigned char quand on veut des entiers positifs, ou quand on veut manipuler les bits de l'octet un par un (parce que les opération de bit avec des valeurs signées sont assez casse gueule).
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.
Quant à moi, pour les deux derniers cas, j'utiliserais respectivement int8_t et uint8_t.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager