Palabra clave sin firmar en C ++

¿La palabra clave sin signo se configura de forma predeterminada para un tipo de datos específico en C ++? Estoy tratando de escribir una función para una clase para el prototipo:

unsigned Rotate(unsigned object, int count) 

Pero realmente no entiendo lo que significa unsigned . ¿No debería ser como unsigned int o algo así?

Desde el enlace de arriba:

Varios de estos tipos se pueden modificar utilizando las palabras clave firmadas, sin firmar, cortas y largas. Cuando uno de estos modificadores de tipo se usa solo, se asume un tipo de datos de int

Esto significa que puedes asumir que el autor está usando ints.

Tipos de enteros:

 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 

Tenga cuidado de char:

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

¿La palabra clave sin signo es predeterminada para un tipo de datos en C ++?

Sí, firmado y sin firmar también se pueden usar como especificadores de tipo independientes

Los tipos de datos enteros char, short, long e int pueden ser firmados o no firmados, dependiendo del rango de números necesarios para ser representados. Los tipos con signo pueden representar valores positivos y negativos, mientras que los tipos sin signo solo pueden representar valores positivos (y cero).

Un entero sin signo que contiene n bits puede tener un valor entre 0 y 2 n – 1 (que es 2 n valores diferentes).

Sin embargo, firmado y sin firmar también se puede usar como especificadores de tipo independientes, lo que significa lo mismo que int firmado y unsigned int, respectivamente. Las siguientes dos declaraciones son equivalentes:

 unsigned NextYear; unsigned int NextYear; 

Puede leer sobre la palabra clave sin firmar en la Referencia de C ++ .

Hay dos tipos diferentes en este asunto, firmados y no firmados. El valor predeterminado para enteros está firmado, lo que significa que pueden tener valores negativos.

En un sistema de 32 bits, un entero es de 32 bits, lo que significa que puede contener un valor de ~ 4 mil millones.

Y cuando está firmado, esto significa que necesita dividirlo, dejando -2 mil millones a +2 mil millones.

Sin embargo, cuando no está firmado, el valor no puede contener ningún número negativo, por lo que para los enteros esto significaría de 0 a +4 mil millones.

Hay un poco más de información sobre esto en Wikipedia .

Sí, significa unsigned int . Solía ​​ser que, si no especificaba un tipo de datos en C, había muchos lugares en los que simplemente asumía int . Este fue un bash, por ejemplo, de tipos de retorno de función.

Esta verruga se ha erradicado en su mayoría, pero aquí se encuentran sus últimos vestigios. En mi humilde opinión, el código debe ser arreglado para decir unsigned int para evitar el tipo de confusión que está experimentando.