Что такое неподписанный символ? - PullRequest
429 голосов
/ 16 сентября 2008

В C / C ++ для чего используется unsigned char? Чем он отличается от обычного char?

Ответы [ 16 ]

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

unsigned char - это сердце всех хитростей. Почти во всех компиляторах для платформы ALL неподписанный символ - это просто BYTE. Целое число без знака (обычно) 8 бит. это можно рассматривать как маленькое целое число или пакет битов.

В зависимости, как сказал кто-то еще, стандарт не определяет знак символа. Таким образом, у вас есть 3 различных типа "char": char, подписанный char, unsigned char.

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

Беззнаковый символ использует бит, зарезервированный для знака обычного символа, в качестве другого числа. Это изменяет диапазон на [0 - 255], а не на [-128 - 127].

Обычно символы без знака используются, когда вы не хотите использовать знак. Это будет иметь значение при выполнении таких вещей, как смещение битов (смещение расширяет знак) и другие вещи при работе с символом как байтом, а не с использованием его в качестве числа.

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

Если вам нравится использовать различные типы определенной длины и подписи, вам, вероятно, лучше использовать uint8_t, int8_t, uint16_t и т. Д. Просто потому, что они делают именно то, что говорят.

1 голос
/ 16 сентября 2008

Какой-то поисковый запрос нашел это , где люди обсуждали это.

Беззнаковый символ - это, в основном, один байт. Таким образом, вы можете использовать это, если вам нужен один байт данных (например, может быть, вы хотите использовать его для включения и выключения флагов, передаваемых в функцию, как это часто делается в Windows API).

0 голосов
/ 25 ноября 2017

беззнаковый символ принимает только положительные значения: от 0 до 255 знаковый символ принимает положительные и отрицательные значения: от -128 до + 127

0 голосов
/ 21 июля 2017

цитата из книги "C программирования laugage":

К символу или любому целому числу может применяться квалификатор signed или unsigned. числа без знака всегда положительны или равны нулю и подчиняются законам арифметики по модулю 2 ^ n, где n - число бит в типе. Так, например, если символы равны 8 битам, переменные без знака имеют значения от 0 до 255, в то время как знаковые символы имеют значения от -128 до 127 (через два дополняют машину.) Независимо от того, подписаны или не подписаны простые символы, зависит от машины, но печатные символы всегда положительны.

...