Я пытаюсь выяснить причину, по которой char
отличается от signed char
и unsigned char
.
Я нашел следующие посты, которые дают некоторое обоснование, но не отвечают на мой квест:
Разница между знаковым / беззнаковым символом
Отчасти причина того, что есть два диалекта «C» (те, где «char» подписано, и те, где он не подписан) состоит в том, что есть некоторые реализации, где «char» должен быть без знака, и другие, где он должен быть подписанным.
Если в наборе символов целевой платформы любой из символов, требуемых стандартом C, будет соответствовать коду, превышающему максимальное число знаков со знаком, то символ 'char' должен быть без знака.
Если 'char' и 'short' имеют одинаковый размер, то 'char' должен быть подписан.
Является ли char подписанным или неподписанным по умолчанию?
в начале жизни C "стандарт" переворачивался как минимум дважды, и некоторые популярные ранние компиляторы оказывались в одном направлении, а другие - в другом
Я понимаю, что unsigned char
может быть более эффективным, но есть ли случаи, когда signed char
более эффективен?