Ключевое слово без знака в C++



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



unsigned Rotate(unsigned object, int count)


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

712   5  

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++

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

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

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

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

unsigned NextYear;
unsigned int NextYear;

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

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

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

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

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

есть немного больше информации об этом на Википедия.

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

эта бородавка в основном была искоренена, но вы сталкиваетесь с ее последними остатками здесь. ИМХО, код должен быть исправлен, чтобы сказать unsigned int чтобы избежать именно такой путаницы, которую вы испытываете.

Comments

    Ничего не найдено.