Используется ли ключевое слово unsigned по умолчанию для определенного типа данных в C ++? Я пытаюсь написать функцию для класса для прототипа:
unsigned Rotate(unsigned object, int count)
Но я действительно не понимаю, что unsigned
означает. Разве это не должно быть похоже unsigned 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
источник
Да, подписанные и неподписанные также могут использоваться как автономные спецификаторы типа
Целочисленные типы данных char, short, long и int могут быть знаковыми или беззнаковыми в зависимости от диапазона чисел, которые необходимо представить. Типы со знаком могут представлять как положительные, так и отрицательные значения, тогда как типы без знака могут представлять только положительные значения (и ноль).
Целое число без знака, содержащее n битов, может иметь значение от 0 до 2 n - 1 (что представляет собой 2 n различных значений).
Однако подписанные и беззнаковые также могут использоваться как автономные описатели типа, что означает то же самое, что и подписанные int и unsigned int соответственно. Следующие два объявления эквивалентны:
unsigned NextYear; unsigned int NextYear;
источник
short
иlong
также являются модификаторами типа . Если вы пишетеshort s
, это на самом деле означаетshort int s
, как наunsigned u
самом делеunsigned int u
. (иunsigned short
означаетunsigned short int
)Вы можете прочитать о ключевом слове unsigned в Справочнике по C ++. .
В этом случае есть два разных типа: подписанные и неподписанные. По умолчанию для целых чисел используется знак, что означает, что они могут иметь отрицательные значения.
В 32-битной системе целое число составляет 32 бита, что означает, что оно может содержать значение ~ 4 миллиарда.
И когда он подписан, это означает, что вам нужно разделить его, оставив от -2 миллиарда до +2 миллиарда.
Однако, когда оно беззнаковое, значение не может содержать никаких отрицательных чисел, поэтому для целых чисел это будет означать от 0 до +4 миллиардов.
В Википедии есть немного больше информации об этом .
источник
Да, значит
unsigned int
. Раньше считалось, что если вы не указали тип данных в C, было много мест, где он просто предполагалсяint
. Это была попытка, например, возвращаемых типов функций.Эта бородавка в основном ликвидирована, но здесь вы встретите ее последние остатки. ИМХО, код должен быть исправлен,
unsigned int
чтобы избежать путаницы, которую вы испытываете.источник