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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top