web-dev-qa-db-fra.com

Printf long long int en C avec GCC?

Comment puis-je imprimer long long int Et aussi unsigned long long int Dans C99 en utilisant GCC?

J'ai cherché dans les autres posts qui suggèrent d'utiliser %lld Mais cela donne ces avertissements:

avertissement n ° 1: caractère de type de conversion inconnu 'l' au 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);
}
49
user963241

Si vous utilisez Windows et que vous utilisez mingw, gcc utilise le runtime win32, où printf a besoin de %I64d pour un entier de 64 bits. (et %I64u pour un entier non modifié de 64 bits)

Pour la plupart des autres plateformes, vous utiliseriez %lld pour avoir imprimé longtemps. (et %llu _ s'il n'est pas signé). Ceci est normalisé dans C99.

gcc ne vient pas avec une exécution complète en C, il diffère de la plate-forme sur laquelle il tourne - le cas général est que vous devez consulter la documentation de votre plate-forme particulière - indépendamment de gcc.

62
nos

Essayez de mettre à jour votre compilateur, j'utilise GCC 4.7 sur Windows 7 Starter x86 avec MinGW et il compile correctement avec les mêmes options à la fois en C99 et en C11.

3
effeffe