/ / Majú 'a' a '0' vždy kladné hodnoty, aj keď je znak podpísaný? - c, kódovanie znakov, jazykový právnik

Do 'a' a '0' majú vždy pozitívne hodnoty, aj keď je podpísaný char? - c, kódovanie znakov, jazyk-právnik

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ď č. 1

C99 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é.