601 votes

Quel est l’argument pour printf qui met en forme une longue ?

Le fonction accepte un type de l’argument, tels que ou pour un . Cependant, je ne vois pas quoi que ce soit pour une `` valeur.

774voto

postfuturist Points 9836

Mettre un « l » directement avant le spécificateur.

205voto

Blorgbeard Points 38991

Je pense que tu veux dire :

ou

96voto

Dave Dopson Points 16690

Comme indiqué par d'autres, l'impression de la valeur comme un nombre est assez facile:

printf("%lld", n); // signed
printf("%llu", n); // unsigned

Oh, et bien sûr, c'est différent dans Windows:

printf("%l64d", n); // signed
printf("%l64u", n); // unsigned

Souvent, quand je suis à l'impression des valeurs 64 bits, je trouve utile de les imprimer au format hexadécimal (généralement avec les nombres très grands, ils sont des pointeurs ou des champs de bits).

unsigned long long n;
printf("0x%016llX", n); // "0x" followed by "0-padded", "16 char wide", "long long", "HEX with 0-9A-F"

affichera:

0x00000000DEADBEEF

Btw, "long" ne veut pas dire que beaucoup plus. "int" est la plate-forme par défaut int taille, généralement de 32 bits. "long", c'est généralement de la même taille. En théorie, ils ont différents portabilité sémantique vis-a-vi anciennes plates-formes. "long long" est un nombre de 64 bits et généralement ce que les gens destinés à utiliser que si vraiment ils savent vraiment ce qu'ils faisaient de l'édition d'un morceau de x-plate-forme du code portable. Même alors, ils auraient probablement utilisé une macro au lieu de capturer la sémantique du type (par exemple un uint64_t).

char c;       // 8 bits
short s;      // 16 bits
int i;        // 32 bits (on modern platforms)
long l;       // 32 bits
long long ll; // 64 bits 

Retour dans la journée, "int" est de 16 bits. Pensez-vous que ça serait maintenant en 64 bits, mais non, cela aurait provoqué un fou des problèmes de portabilité. Bien sûr, ce qui est une simplification de l'arcane et riches en histoire de la vérité. Voir wiki:Integer

17voto

krato Points 132

Ça dépend, si vous faites référence à unsigned long le caractère de mise en forme est . Si vous faites allusion à signé depuis longtemps le caractère de mise en forme est .

16voto

Rob Walker Points 25840

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X