C: converter assinado para não assinado
-
26-09-2019 - |
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
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