Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

codercss

Utilizar o modificador unsigned para validar o sinal de um número

Recommended Posts

Olá a todos,

 

Neste programa não deveria receber um erro, uma vez que estou a inicializar a variável valor com um número negativo?

#include <stdio.h>
 
int main(void) {
unsigned int valor = -9;
printf("O resultado de valor é %d", valor);
}

Ele imprime -9, porque?

Nota: Estou a utilizar o codeblocks, mas já fiz via gcc, no terminal, e o resultado é o mesmo!

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sinto-me um pouco perdido, mas fiz algumas pesquisas e achei este especificador (não sei se é assim que se diz), %u. Neste código os resultado são bem diferentes:

 

 

#include <stdio.h>
 
int main(void){
 
unsigned int valor = -9;
printf("%d\n, valor); // -9
printf("%u", valor);  //4294967287
 
}

 

Continua a não perceber a aplicação do parametro unsigner (não sei se é uma propriedade). A não ser que a função printf intreperte este parametro de maneira diferente, é isso?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já percebi que ao colocar o atributo unsigned estou a converter o alcance negativo para positivo, fazendo com que vá de 0 até 65535! Mas uma vez que elimino o alcance negativo porque que o compilador deixa que sejam inicializados valores negativos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.