Подтвердить что ты не робот

Неподписанное ключевое слово в С++

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

unsigned Rotate(unsigned object, int count)

Но я действительно не понимаю, что означает unsigned. Разве это не похоже на unsigned int или что-то еще?

4b9b3361

Ответ 1

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

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

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

Ответ 2

Целочисленные типы:

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

Ответ 3

Использует ли неподписанное ключевое слово по умолчанию тип данных в С++

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

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

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

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

unsigned NextYear;
unsigned int NextYear;

Ответ 4

Вы можете прочитать о ключевом слове unsigned в С++ Reference.

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

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

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

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

Здесь немного больше информации об этом на Wikipedia.

Ответ 5

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

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