Любой компилятор, который принимает 'char' как 'unsigned'? - PullRequest
5 голосов
/ 16 сентября 2010

Существует ли какой-либо компилятор C, который принимает тип char по умолчанию как unsigned, если это явно не указано пользователем в настройках файла или проекта?

/ Kanu_

Ответы [ 3 ]

12 голосов
/ 16 сентября 2010

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

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

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

4 голосов
/ 16 сентября 2010

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

2 голосов
/ 16 сентября 2010

Обычно есть возможность установить его по умолчанию, но ни один мой компилятор этого не делает.

...