Pergunta

Na verdade, eu (provavelmente) um problema "simples". Então, não sei como lançar um número inteiro assinado para um número inteiro não assinado.

Meu código:

signed int entry = 0;
printf("Decimal Number : ");
scanf("%d", &entry);
unsigned int uEntry= (unsigned int) entry;
printf("Unsigned : %d\n", uEntry);

Se eu enviar o valor não assinado para o console (consulte minha última linha de código), sempre recebo um número inteiro assinado.

Pode me ajudar?

Muito obrigado!

Atenciosamente, Pro

Foi útil?

Solução

printf("Unsigned : %u\n", uEntry);
//                 ^^

Você deve usar o %u especificador para dizer o printf Tempo de execução que o uEntry é um unsigned int. Se você usar %d a printf função espera um int, Assim, reinterprete sua entrada de volta a um valor assinado.

Outras dicas

Anexe essas duas linhas no final do seu código e você entenderia o que está acontecendo.

printf("entry: signed = %d, unsigned = %u, hex = 0x%x\n", entry, entry entry);
printf("uEntry: signed = %d, unsigned = %u, hex = 0x%x\n", uEntry,uEntry,uEntry);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top