Есть ли компилятор C, который принимает тип char по умолчанию как unsigned, если явно не указано пользователем в настройках файла или проекта?Любой компилятор, который берет 'char' как 'unsigned'?
/Kanu_
Есть ли компилятор C, который принимает тип char по умолчанию как unsigned, если явно не указано пользователем в настройках файла или проекта?Любой компилятор, который берет 'char' как 'unsigned'?
/Kanu_
GCC не делает. Но только при компиляции для платформ, где unsigned char является соглашением, включая ARM linux [*]. Когда GCC компилируется для x86, по умолчанию используется знак char.
[*] Или, по крайней мере, это было в прошлом. Для всех я знаю, что linux с другой стороны переключился на другой ABI по умолчанию.
Обновление '2013: ARM-компиляторы (gcc, clang) для Android NDK по умолчанию unsigned char
. Компиляторы x86 и MIPS по умолчанию равны signed char
.
Существует обычно возможность установить его по умолчанию, но не составитель моих знаний не делает.
Стандарт требует, чтобы целое значение всех символов, требуемых стандартом (AZ, az, 0-9, базовая пунктуация и т. Д.), Было положительным, поэтому любая система, использующая кодировку, в которой значения этих символов находятся за пределами диапазон signed char
must имеют равные char
be unsigned. Я считаю, что это означает, что все системы EBCDIC должны иметь простой char
, который беззнаковый, но я могу ошибаться.
Если' CHAR_BIT'> 8, диапазон значений для 'char' больше -128..127 или 0,255. Таким образом, в системе EBCDIC с CHAR_BIT == 9 может быть подписан простой символ «char». – pmg
Существует. В 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) –