Есть ли какой-либо компилятор C, который принимает тип char по умолчанию как беззнаковый, если он явно не указан пользователем в настройках файла или проекта?
/Кану_
Есть ли какой-либо компилятор C, который принимает тип char по умолчанию как беззнаковый, если он явно не указан пользователем в настройках файла или проекта?
/Кану_
GCC делает. Но только при компиляции для платформ, где неподписанный символ является соглашением, включая ARM linux[*]. Когда GCC компилирует для x86, по умолчанию char должен быть подписан.
[*] По крайней мере, так было в прошлом. Насколько я знаю, с тех пор Linux переключился на другой ABI по умолчанию на ARM.
Обновление 2013 г. Компиляторы ARM (gcc, clang) для Android NDK по умолчанию имеют значение unsigned char
. Компиляторы x86 и MIPS по умолчанию имеют значение signed char
.
Стандарт требует, чтобы целочисленное значение всех символов, требуемых стандартом (AZ, az, 0-9, основные знаки препинания и т. д.), было положительным, поэтому любая система, использующая кодировку, в которой значения этих символов находятся за пределами диапазона signed char
< strong>должен иметь простое char
без знака. Я считаю, что это означает, что все системы EBCDIC должны иметь простое char
без знака, но я могу ошибаться.
CHAR_BIT
> 8, диапазон значений для char
больше -128..127 или 0..255. Таким образом, в системе EBCDIC с CHAR_BIT == 9 может быть подписано простое char
.
- person pmg; 16.09.2010
Обычно есть возможность установить его по умолчанию, но, насколько мне известно, ни один компилятор этого не делает.
/J
(тип char по умолчанию — без знака). В GCC вы используете -funsigned-char
- person phuclv; 20.02.2016