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.

Foi útil?

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.

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