Printf long long int en C avec GCC?
Comment puis-je printf long long int
et aussi unsigned long long int
en C99 à l'aide de GCC?
J'ai cherché dans les autres postes, ce qui suggère l'utilisation de %lld
mais il donne à ces mises en garde:
avertissement n ° 1: inconnu type de conversion de caractère 'l' dans le format [-Wformat]|
avertissement n ° 2: trop d'arguments pour le format [-Wformat-extra-args]|
Pour la tentative suivante:
#include <stdio.h>
int main()
{
long long int x = 0;
unsigned long long int y = 0;
printf("%lld\n", x);
printf("%llu\n", y);
}
- Avez-vous utilisé le
-std=c99
drapeau lors de la compilation? - Oui, je l'ai fait.
- Je n'ai pas de mises en garde: i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Basé sur Apple Inc. construire 5658) (LLVM construire 2335.15.00)
- Quelle version de compilateur?
- Je ne suis pas sûr de la façon de regarder pour la version. Je suis à court de gcc sous windows x86.
gcc -v
, de toute façon.- Ah, c'est la version de gcc 4.6.1. Merci @effeffe.
- La version de Windows que vous utilisez?
- De même, la lecture de la accepté de répondre et depuis GCC changements de rapport n'évoque pas cette question, qui pourrait être le problème. J'aimerais quand même essayer de mettre à jour le compilateur.
- Windows xp service pack 3.
- Je viens de découvrir que je n'avais pas
-std=c99
drapeau. J'ai pensé qu'il était défini globalement pour tous les projets. Le programme que j'ai dans l'exemple compile sans aucun avertissement. Je m'excuse pour toute difficulté. - double possible de MinGW GCC: "Unknown type de conversion de caractère 'h'" (snprintf)
Vous devez vous connecter pour publier un commentaire.
Si vous êtes sur windows et en utilisant mingw gcc utilise le win32 l'exécution, où printf besoins
%I64d
pour un entier de 64 bits. (et%I64u
pour un unsinged entier de 64 bits)Pour la plupart des autres plates-formes que vous souhaitez utiliser
%lld
pour l'impression d'un long long. (et%llu
si c'est non signé). C'est standarized en C99.gcc ne vient pas avec un C de l'exécution, elle renvoie à la plate-forme, il est exécuté sur - le cas général, c'est que vous avez besoin de consulter la documentation de votre plate - forme indépendante de gcc.
h
modifie la longueur de décimales àshort
. Aucune idée sihh
fonctionne bien sous windows sur gcc et ce qu'il fait?__USE_MINGW_ANSI_STDIO=1
fera mingw utiliser un standard stdio. Ceci est utile aussi parce que windows printf ne comprend pas le %. n.%lld %llX
. Pour obtenir le programme de travail de manière cohérente, vous pouvez utiliser la méthode mentionnée par @Shahbaz de sorte que vous n'avez pas à utiliser bizarre%I64d
choses.Essayer de mettre à jour votre compilateur, je suis en utilisant GCC 4.7 sur Windows 7 Starter x86 avec MinGW et il compile bien avec les mêmes options à la fois en C99 et C11.