В зависимости от настроек среды и компилятора тип char
может быть подписан или неподписанным по умолчанию, что означает, что диапазон значений для одиночных символьных констант в 8-разрядных системах дополнений может быть либо -128..127
, либо 0..255
.
В вездесущем наборе символов ASCII его расширения ISO-8859-X или кодировка UTF-8, буквы верхнего и нижнего регистра, а также цифры имеют значения ниже 127.
Но это не так с набором символов EBCDIC:
'A'
равен 0xC1, 'A'
равен 0x81, а '1'
равен 0xF1.
Поскольку это значение выше 127, означает ли это, что тип char
должен быть неподписанным в 8-битных системах EBCDIC? Или могут 'A'
, 'A'
и '1'
иметь отрицательные значения?
Как насчет других наборов символов? Может ли буквы или цифры когда-либо иметь отрицательные значения?