IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

unsigned long long int et printf


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut unsigned long long int et printf
    Bonjour,

    Je reprenais un vieux code et je me disais que je voulais utiliser des unsigned long long mais le compilo n'accepte pas le format dans le printf et me colle des warnings.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>
    #include <time.h>
    #include "matrix.h"
    #include "allocate.h"
    #include "deallocate.h"
    #include "file.h"
     
    int main()
    {
        printf("%llu\n", ULLONG_MAX);
        file_log();
        allocate_log();
        deallocate_log();
        matrix_log();
     
        srand(time(NULL));
        t_matrix *m0=matrix_create(5,6);
        t_matrix *m1=matrix_create(5,5);
     
        matrix_random(m0,0,100);
        matrix_random(m1,0,500);
     
        t_matrix *m2=matrix_sum(m0,m1);
        t_matrix *m3=matrix_substract(m1,m0);
        t_matrix *m4=matrix_multiply(m1,m0);
     
        matrix_display(m0);
        matrix_display(m1);
        matrix_display(m2);
        matrix_display(m3);
        matrix_display(m4);
     
        matrix_destroy(m0);
        matrix_destroy(m1);
        matrix_destroy(m2);
        matrix_destroy(m3);
        matrix_destroy(m4);
     
        matrix_unlog();
        allocate_unlog();
        deallocate_unlog();
        file_unlog();
        return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    main.c|12|warning: unknown conversion type character 'l' in format|
    main.c|12|warning: too many arguments for format|
    ||=== Build finished: 0 errors, 2 warnings ===|
    Une petite idée =) ?

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Citation Envoyé par darkwall_37 Voir le message
    Bonjour,

    Je reprenais un vieux code et je me disais que je voulais utiliser des unsigned long long mais le compilo n'accepte pas le format dans le printf et me colle des warnings.


    Une petite idée =) ?
    Passer une option de compilation pour qu'il reconnaisse ton code comme etant C99 ? Un truc du genre --std=C99 ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  3. #3
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    Nikel !

    MERCI

  4. #4
    Membre éclairé Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Par défaut
    Quel compilateur utilises-tu et quelle est sa version ?
    J'ai testé le code suivant avec gcc 4.7.2 sans option particulière et je n'ai aucun message d'erreur ni avertissement, même avec l'option -Wall.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include <stdio.h>
    #include <stdlib.h>
    #include <limits.h>
     
    int main()
    {
      printf("%llu\n", ULLONG_MAX);
      getchar();
     
      return 0;
    }

  5. #5
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Citation Envoyé par Ngork Voir le message
    Quel compilateur utilises-tu et quelle est sa version ?
    J'ai testé le code suivant avec gcc 4.7.2 sans option particulière et je n'ai aucun message d'erreur ni avertissement, même avec l'option -Wall.
    Tient, c'est drole ca.
    GCC 4.1.2 :
    > gcc -Wall -Wextra test.c -o test
    test.c: In function 'main':
    test.c:7: error: 'ULLONG_MAX' undeclared (first use in this function)
    test.c:7: error: (Each undeclared identifier is reported only once
    test.c:7: error: for each function it appears in.)
    du coup, avec l'option -std=c99, ca passe sans erreur.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  6. #6
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    Je n'ai aucune idée de la version de gcc, je sais que j'ai code blocks 10.05 je crois. Je suppose que l'on peut retrouver la version de gcc associée avec ça.

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Joa,
    Citation Envoyé par darkwall_37 Voir le message
    Je n'ai aucune idée de la version de gcc, je sais que j'ai code blocks 10.05 je crois. Je suppose que l'on peut retrouver la version de gcc associée avec ça.
    Non, ce n'est pas implicite : Code::Blocks est seulement un environnement de développement, il peut accepter n'importe quel compilateur.

    Pour connaître ta version de gcc :

    - avec une invite de commande, change le répertoire actif pour être dans le répertoire des binaires de gcc (Chemin_Vers_Mingw/bin)

    - et entre la commande: gcc --version

    - et tu le sauras.

  8. #8
    Membre éclairé Avatar de Ngork
    Homme Profil pro
    Barbare IT
    Inscrit en
    Avril 2009
    Messages
    160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Barbare IT
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2009
    Messages : 160
    Par défaut
    @ gangsoleil

    GCC 4.1.2 ?
    Oui, c'est un peu normal qu'avec un compilo qui a déjà plusieurs années (la version 4.1 de gcc date un peu, il me semble), l'option soit encore nécessaire !
    Toutefois, je confirme qu'avec GCC 4.7.2, ici dans Code::Blocks sous Linux, sans option spécifique, je n'ai eu aucun souci :

    -------------- Clean: Release in test ---------------

    Cleaned "test - Release"

    -------------- Build: Release in test ---------------

    gcc -Wextra -Wall -O2 -c main.c -o main.o
    g++ -o test main.o -s
    Output size is 3,23 KB
    Process terminated with status 0 (0 minutes, 0 seconds)
    0 errors, 0 warnings

  9. #9
    Membre éclairé
    Homme Profil pro
    amateur
    Inscrit en
    Octobre 2007
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : amateur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 731
    Par défaut
    Je vais télécharger la dernière version alors parce qu'en faite ça marche pas.
    Il me met option invalide mais cache les warning je n'avais pas fait gaffe.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. unsigned long long int -> char*
    Par Kaluza dans le forum Langage
    Réponses: 2
    Dernier message: 28/05/2011, 03h12
  2. unsigned long long int
    Par salseropom dans le forum C
    Réponses: 10
    Dernier message: 21/12/2006, 22h43
  3. décallage sur long long int
    Par trax44 dans le forum C
    Réponses: 9
    Dernier message: 26/02/2006, 11h41
  4. Réponses: 6
    Dernier message: 06/12/2005, 16h54
  5. [Transtypage] Long en int
    Par Bugmaster dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2004, 09h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo