c++ - tipos - variables de tipo real en c
Palabra clave sin signo en C++ (5)
¿La palabra clave unsigned está predeterminada a 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í?
¿La palabra clave unsigned está predeterminada a un tipo de datos en C ++?
Sí, firmado y sin firmar también se puede utilizar como especificadores de tipo independientes
Los tipos de datos enteros char, short, long e int pueden ser firmados o no, dependiendo del rango de números que se deben representar. Los tipos firmados pueden representar valores tanto positivos como negativos, mientras que los tipos sin firmar 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, los firmados y los no firmados también se pueden usar como especificadores de tipo independientes, lo que significa lo mismo que firm int y unsigned int respectivamente. Las siguientes dos declaraciones son equivalentes:
unsigned NextYear;
unsigned int NextYear;
Desde el link arriba:
Varios de estos tipos se pueden modificar con las palabras clave signed, unsigned, short y long. Cuando uno de estos modificadores de tipo se usa por sí mismo, se supone un tipo de datos de int
Esto significa que puede suponer que el autor está usando ints.
Puede leer sobre la palabra clave unsigned en C ++ Reference .
Hay dos tipos diferentes en este asunto, firmado y sin firmar. El valor predeterminado para enteros está firmado, lo que significa que pueden tener valores negativos.
En un sistema de 32 bits, un número entero es de 32 bits, lo que significa que puede contener un valor de ~ 4 mil millones.
Y cuando está firmado, esto significa que debe 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 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 donde simplemente asumió int
. Esto fue intentar, por ejemplo, de tipos de devolución de funciones.
Esta verruga ha sido erradicada en su mayoría, pero estás encontrando sus últimos vestigios aquí. En mi humilde opinión, el código debe ser corregido para decir unsigned int
para evitar el tipo de confusión que está experimentando.
Tipos 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