Подтвердить что ты не робот

У "а" и "0" всегда есть положительные значения, даже если char подписан?

В зависимости от настроек среды и компилятора тип 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' иметь отрицательные значения?

Как насчет других наборов символов? Может ли буквы или цифры когда-либо иметь отрицательные значения?

4b9b3361

Ответ 1

C99 утверждает, что:

6.2.5 Типы

Объект, объявленный как тип char, достаточно велик для хранения любого члена базового набора символов выполнения.

Если член набора символов основного исполнения хранится в char, его значение гарантировано неотрицательно.

Таким образом, если рассматриваемая машина использует кодировку EBCDIC и 8-бит char, тогда компилятор, совместимый с C99, предназначенный для этой машины, должен иметь без знака char.