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;
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).
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