Wat is een niet-ondertekende char?
Waar wordt in C/C++ een unsigned char
voor gebruikt? Wat is het verschil met een gewone char
?
452
3
Waar wordt in C/C++ een unsigned char
voor gebruikt? Wat is het verschil met een gewone char
?
Dit is implementatie-afhankelijk, omdat de C standaard NIET bepaalt of
char
ondertekend is. Afhankelijk van het platform, kan charsigned
ofunsigned
zijn, dus je moet expliciet vragen omsigned char
ofunsigned char
als je implementatie daarvan afhankelijk is. Gebruikchar
als je tekens uit strings wilt weergeven, omdat dit overeenkomt met wat je platform in de string zet.Het verschil tussen
signed char
enunsigned char
is zoals je'zou verwachten. Op de meeste platformen zalsigned char
een 8-bits two's complement getal zijn van-128
tot127
, enunsigned char
zal een 8-bits unsigned integer zijn (0
tot255
). Merk op dat de standaard NIET vereist datchar
types 8 bits hebben, alleen datsizeof(char)
1
teruggeeft. Je kunt het aantal bits in een char bepalen metCHAR_BIT
inlimits.h
. Er zijn tegenwoordig weinig of geen platformen waar dit iets anders is dan8
, hoewel.Er is een mooie samenvatting van dit probleem hier.
Zoals anderen al opmerkten sinds ik dit postte, kun je beter
int8_t
enuint8_t
gebruiken als je echt kleine gehele getallen wilt representeren.Als je een karakter als een klein integer wilt gebruiken, is de veiligste manier om dat te doen met de
int8_t
enuint8_t
types.signed char
heeft een bereik van -128 tot 127;unsigned char
heeft een bereik van 0 tot 255.char
is equivalent aan ofwel signed char ofwel unsigned char, afhankelijk van de compiler, maar is een apart type.Als je C-stijl strings gebruikt, gebruik dan
char
. Als je chars moet gebruiken voor rekenkundige bewerkingen (vrij zeldzaam), specificeer dan expliciet ondertekend of niet-ondertekend voor portabiliteit.