web-dev-qa-db-fra.com

Comment printf "unsigned long" en C?

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

Supposons que unsigned_foo est un unsigned long, alors j'essaie:

  • 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 affichent une sorte de numéro -123123123 au lieu de unsigned long que j'ai.

309
bodacydo

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

455
Thanatos
  • %lu for nsigned long
  • %llu pour nsigned long long
24
NealCaffery

Pour int%d

Pour long int%ld

Pour long long int%lld

Pour nsigned long long int%llu

21
Linkon

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

21
R..

Le format est %lu.

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

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

Ce sera utile. . .

8

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

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

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

8
Kumar Alok