Question

Je n'arrive jamais à comprendre comment imprimer unsigned long type de données en C.

Supposer unsigned_foo est un unsigned long, alors j'essaye :

  • 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)

Et tous impriment une sorte de -123123123 numéro au lieu de unsigned long que j'ai.

Était-ce utile?

La solution

%lu est le format correct pour unsigned long.On dirait qu'il y a d'autres problèmes en jeu ici, tels qu'une corruption de la mémoire ou une variable non initialisée.Peut-être nous montrer une image plus grande ?

Autres conseils

  • %lu pour non signé depuis longtemps
  • %llu pour non signé depuis longtemps

Pour int %d

Pour long int %ld

Pour long long int %lld

Pour non signé long long int %llu

Parmi toutes les combinaisons que vous avez essayées, %ld et %lu sont les seuls à être des spécificateurs de format printf valides. %lu (décimal long non signé), %lx ou %lX (hexagonal long avec des lettres minuscules ou majuscules), et %lo (octal long) sont les seuls spécificateurs de format valides pour une variable de type unsigned long (bien sûr, vous pouvez ajouter des modificateurs de largeur de champ, de précision, etc. entre les % et le l).

int main()
{
    unsigned long long d;
    scanf("%llu",&d);
    printf("%llu",d);
    getch();
}

Cela sera utile...

Le format est %lu.

Veuillez vérifier les différents autres types de données et leur utilisation dans printf ici

Le spécificateur correct pour unsigned long est %lu.

Si vous n'obtenez pas la valeur exacte que vous attendez, il se peut qu'il y ait des problèmes dans votre code.

Veuillez copier votre code ici.Alors peut-être que quelqu'un pourra mieux vous dire quel est le problème.

J'ai eu le même problème.Essayez "%ul", ça marche pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top