2010-09-16 7 views

ответ

11

GCC не делает. Но только при компиляции для платформ, где unsigned char является соглашением, включая ARM linux [*]. Когда GCC компилируется для x86, по умолчанию используется знак char.

[*] Или, по крайней мере, это было в прошлом. Для всех я знаю, что linux с другой стороны переключился на другой ABI по умолчанию.

Обновление '2013: ARM-компиляторы (gcc, clang) для Android NDK по умолчанию unsigned char. Компиляторы x86 и MIPS по умолчанию равны signed char.

2

Существует обычно возможность установить его по умолчанию, но не составитель моих знаний не делает.

+2

Существует. В MSVC вы используете ['/ J' (Default char Type Is unsigned)] (https://msdn.microsoft.com/en-us/library/0d294k5z.aspx). В GCC вы используете ['-funsigned-char'] (http://stackoverflow.com/a/20518559/995714) –

4

Стандарт требует, чтобы целое значение всех символов, требуемых стандартом (AZ, az, 0-9, базовая пунктуация и т. Д.), Было положительным, поэтому любая система, использующая кодировку, в которой значения этих символов находятся за пределами диапазон signed charmust имеют равные char be unsigned. Я считаю, что это означает, что все системы EBCDIC должны иметь простой char, который беззнаковый, но я могу ошибаться.

+4

Если' CHAR_BIT'> 8, диапазон значений для 'char' больше -128..127 или 0,255. Таким образом, в системе EBCDIC с CHAR_BIT == 9 может быть подписан простой символ «char». – pmg

 Смежные вопросы

  • Нет связанных вопросов^_^