Palavra -chave não assinada em c ++
Pergunta
A palavra -chave não assinada é padrão para um tipo de dados específico no C ++? Estou tentando escrever uma função para uma classe para o protótipo:
unsigned Rotate(unsigned object, int count)
Mas eu realmente não entendo o que unsigned
significa. Não deveria ser como unsigned int
ou alguma coisa?
Solução
De link acima de:
Vários desses tipos podem ser modificados usando as palavras -chave assinadas, não assinadas, curtas e longas. Quando um desses modificadores de tipo é usado por si só, um tipo de dados é assumido
Isso significa que você pode assumir que o autor está usando o INTS.
Outras dicas
Tipos inteiros:
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
Tenha cuidado com o char:
char (is signed or unsigned depending on the implmentation)
signed char
unsigned char
A palavra -chave não assinada é padrão para um tipo de dados em C ++
Sim, assinado e não assinado também pode ser usado como especificadores do tipo independente
Os tipos de dados inteiros char, curtos, longos e int podem ser assinados ou não assinados, dependendo da faixa de números necessários para serem representados. Os tipos assinados podem representar valores positivos e negativos, enquanto os tipos não assinados podem representar apenas valores positivos (e zero).
Um número inteiro não assinado que contém n bits pode ter um valor entre 0 e 2n - 1 (que é 2n valores diferentes).
No entanto, assinado e não assinado também pode ser usado como especificadores do tipo independente, o que significa o mesmo que Int e não assinado, respectivamente. As duas declarações a seguir são equivalentes:
unsigned NextYear;
unsigned int NextYear;
Você pode ler sobre a palavra -chave não assinado na referência C ++.
Existem dois tipos diferentes nesse assunto, assinados e não assinados. O padrão para inteiros é assinado, o que significa que eles podem ter valores negativos.
Em um sistema de 32 bits, um número inteiro é de 32 bits, o que significa que pode conter um valor de ~ 4 bilhões.
E quando é assinado, isso significa que você precisa dividi -lo, deixando -2 bilhões a +2 bilhões.
Quando não é assinado, no entanto, o valor não podes Contendo números negativos; portanto, para números inteiros, isso significaria 0 a +4 bilhões.
Há um pouco mais de informação sobre isso Wikipedia.
Sim, significa unsigned int
. Costumava ser que, se você não especificasse um tipo de dados em C, havia muitos lugares onde ele apenas assumiu int
. Isso foi tentar, por exemplo, de tipos de retorno de função.
Esta verruga foi principalmente erradicada, mas você está encontrando seus últimos vestígios aqui. IMHO, o código deve ser consertado para dizer unsigned int
Para evitar o tipo de confusão que você está experimentando.