V závislosti od prostredia a nastavenia prekladača, typ char
môže byť štandardne podpísaná alebo nepodpísaná, čo znamená, že rozsah hodnôt pre konštanty jedného znaku na 8-bitových 2s komplementárnych systémoch môže byť buď -128..127
alebo 0..255
.
Vo všadeprítomnej znakovej sade ASCII majú jej rozšírenia ISO-8859-X alebo kódovanie utf-8, veľké a malé písmená, ako aj číslice hodnoty nižšie ako 127.
Ale nie je to tak Znaková sada EBCDIC:
"A"
je 0xC1, "a"
je 0x81 a "1"
je 0xF1.
Pretože tieto hodnoty sú vyššie ako 127, znamená to typ char
musí byť nepodpísané na 8-bitových systémoch EBCDIC? Alebo môže "a"
, "A"
a "1"
majú záporné hodnoty?
A čo iné znakové sady? Môžu mať písmená alebo číslice záporné hodnoty?
odpovede:
14 pre odpoveď č. 1C99 uvádza že:
6.2.5 Typy
Objekt deklarovaný ako typ char je dostatočne veľký na uloženie ktoréhokoľvek člena základnej znakovej sady.
Ak je člen základnej znakovej sady uložený v znaku char, jeho hodnota je zaručená ako nezáporná.
Ak teda daný stroj používa kódovanie EBCDIC a 8-bitový char
, potom komputer kompatibilný s C99 určený pre tento stroj musí mať hladký povrch char
byť nepodpísané.