Como printf "unsigned long" em C?
-
13-09-2020 - |
Pergunta
Eu nunca entendo como imprimir unsigned long
o tipo de dados no C.
Suponha que unsigned_foo
é um unsigned long
, então eu tento:
printf("%lu\n", unsigned_foo)
printf("%du\n", unsigned_foo)
printf("%ud\n", unsigned_foo)
printf("%ll\n", unsigned_foo)
printf("%ld\n", unsigned_foo)
printf("%dl\n", unsigned_foo)
E todos eles impressão de algum tipo de -123123123
número em vez de unsigned long
que eu tenho.
Solução
%lu
é o formato correto unsigned long
.Parece que há outras questões em jogo aqui, como o de corrupção de memória ou uma variável não inicializada.Talvez nos mostrar uma imagem maior?
Outras dicas
%lu
para unsigned long%llu
para unsigned long long
Para int %d
Para long int %ld
Para long long int %lld
Para unsigned long long int %llu
De todas as combinações que você tentou, %ld
e %lu
são os únicos que são válidos printf especificadores de formato em tudo. %lu
(longo não assinado decimal), %lx
ou %lX
(longa hexadecimal com letras maiúsculas ou minúsculas), e %lo
(longa octal) são válidos somente especificadores de formato para uma variável do tipo unsigned long (é claro que você pode adicionar a largura do campo, precisão, etc modificadores entre o %
e o l
).
int main()
{
unsigned long long d;
scanf("%llu",&d);
printf("%llu",d);
getch();
}
Isso vai ser útil ...
O formato é %lu
.
Por favor, verifique sobre os vários outros tipos de dados e a sua utilização em printf aqui
O correto especificador para unsigned long é %lu
.
Se você não está recebendo o valor exato que você está esperando, em seguida, pode haver alguns problemas no seu código.
Por favor, copie o código aqui.Então, talvez, alguém pode dizer melhor o que é o problema.
Eu tive o mesmo problema.Tente "%ul", ele trabalha para mim.