Na čo sa v jazyku C/C++ používa unsigned char
? Čím sa líši od bežného znaku
?
To závisí od implementácie, pretože štandard C nedefinuje podpísanosť znakov char
. V závislosti od platformy môže byť char signed
alebo unsigned
, takže ak to závisí od vašej implementácie, musíte explicitne požiadať o signed char
alebo unsigned char
. Ak máte v úmysle reprezentovať znaky z reťazcov, použite len char
, pretože to bude zodpovedať tomu, čo vaša platforma vloží do reťazca.
Rozdiel medzi signed char
a unsigned char
je taký, ako by ste očakávali. Na väčšine platforiem bude signed char
8-bitové dvojkové číslo v rozsahu od -128
do 127
a unsigned char
bude 8-bitové celé číslo bez znamienka (0
až 255
). Všimnite si, že štandard NEvyžaduje, aby typy char
mali 8 bitov, iba aby sizeof(char)
vracal 1
. Počet bitov v char môžete zistiť pomocou CHAR_BIT
v súbore limits.h
. Dnes však existuje len málo platforiem, ak vôbec nejaké, kde to bude niečo iné ako 8
.
Existuje pekné zhrnutie tejto problematiky tu.
Ako už spomenuli iní, čo som to napísal, je lepšie používať int8_t
a uint8_t
, ak naozaj chcete reprezentovať malé celé čísla.
signed char
má rozsah -128 až 127; unsigned char
má rozsah 0 až 255.
char
bude v závislosti od kompilátora ekvivalentný buď signed char alebo unsigned char, ale je to samostatný typ.
Ak používate reťazce v štýle C, použite len char
. Ak potrebujete použiť znaky na aritmetiku (dosť zriedkavo), kvôli prenositeľnosti explicitne špecifikujte signed alebo unsigned.