Ключевое слово Unsigned в C++

имеет ли ключевое слово unsigned значение по умолчанию для определенного типа данных в C++? Я пытаюсь написать функцию для класса для прототипа:

unsigned Rotate(unsigned object, int count)

но я действительно не понимаю, что unsigned средства. Разве это не должно быть как unsigned int или что-то?

5 ответов


с ссылке выше:

некоторые из этих типов могут быть изменены с помощью ключевых слов signed, unsigned, short и long. Когда один из этих модификаторов типа используется сам по себе, предполагается тип данных int

Это означает, что вы можете предположить, что автор использует ИНЦ.


Целое Число Типа:

short            -> signed short
signed short
unsigned short
int              -> signed int
signed int
unsigned int
signed           -> signed int
unsigned         -> unsigned int
long             -> signed long
signed long
unsigned long

будьте осторожны char:

char  (is signed or unsigned depending on the implmentation)
signed char
unsigned char

имеет ли ключевое слово unsigned значение по умолчанию для типа данных в C++

да, signed и unsigned также могут использоваться как автономные спецификаторы типа

целочисленные типы данных char, short, long и int могут быть подписаны или без знака в зависимости от диапазона чисел, которые необходимо представить. Подписанные типы могут представлять как положительные, так и отрицательные значения, тогда как неподписанные типы могут представлять только положительные значения (и ноль).

беззнаковый целое число, содержащее n бит, может иметь значение от 0 до 2n - 1 (что 2n разные значения).

однако signed и unsigned также могут использоваться как автономные спецификаторы типа, что означает то же самое, что signed int и unsigned int соответственно. Следующие два объявления эквивалентны:

unsigned NextYear;
unsigned int NextYear;

вы можете прочитать о ключевое слово без знака в C++ Reference.

в этом вопросе есть два разных типа, подписанные и не подписанные. По умолчанию целые числа подписываются, что означает, что они могут иметь отрицательные значения.

в 32-разрядной системе целое число равно 32 битам, что означает, что оно может содержать значение ~4 миллиарда.

и когда он подписан, это означает, что вам нужно разделить его, оставив от -2 миллиардов до +2 миллиардов.

когда это unsigned однако значение не может содержат любые отрицательные числа, поэтому для целых чисел это будет означать от 0 до +4 миллиардов.

есть немного более informationa насчет этого на Википедия.


Да, это означает unsigned int. Раньше было так, что если вы не указали тип данных в C, было много мест, где он просто предполагал int. Это была попытка, например, типов возвращаемых функций.

unsigned int чтобы избежать именно такой путаницы, которую вы испытываете.