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


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut unsigned long long int
    Bonjour, dans mon prgm je dois faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    double * m=malloc(length*sizeof(*m))
    le hic est que

    où n = 32.

    il faut donc que je fasse

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    unsigned long long int length=(unsigned long long int) pow(2.,n);
    j'ai essayé de faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    printf("ULLONG_MAX = %u\n",ULLONG_MAX);
    avec un #include<limits.h> mais j'ai une erreur :

    B_H.c:41: error: `ULLONG_MAX' undeclared (first use in this function)
    B_H.c:41: error: (Each undeclared identifier is reported only once
    B_H.c:41: error: for each function it appears in.)
    et je pense que unsigned long int ne me suffit pas, mais que je dois bien avoir un unsigned long long int.
    A quoi est-ce du ?

  2. #2
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Les long long n'existent pas en C89, peut etre tu compiles avec -ansi ?

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    salut, non, j'ai un prgm archi simple (aucune string, que des sommes et produits) d'environ 20 lignes. Je fais tout simplement

    gcc -O3 main.c -o out -lm

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par salseropom
    salut, non, j'ai un prgm archi simple (aucune string, que des sommes et produits) d'environ 20 lignes. Je fais tout simplement

    gcc -O3 main.c -o out -lm
    Par défaut la norme utilisée doit être gnu89, essaye avec l'option -std=c99 il n'y a pas de raison pour que ça ne marche pas

  5. #5
    Membre Expert
    Avatar de Gruik
    Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    1 566
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 566
    Par défaut
    Bizarre, normalement gnu89 gere les long long

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 299
    Par défaut
    OK merci avec -std=c99 ça marche. Mais je ne comprends pas ma sortie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      printf("ULONG_MAX = %lu\n",ULONG_MAX);
      printf("ULLONG_MAX = %Lu\n",ULLONG_MAX);
        printf("LLONG_MAX = %lu\n",LLONG_MAX);
    ULONG_MAX = 18446744073709551615
    ULLONG_MAX = 18446744073709551615
    LLONG_MAX = 9223372036854775807
    est-ce normal que ULONG_MAX == ULLONG_MAX ?

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par salseropom
    OK merci avec -std=c99 ça marche. Mais je ne comprends pas ma sortie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      printf("ULONG_MAX = %lu\n",ULONG_MAX);
      printf("ULLONG_MAX = %Lu\n",ULLONG_MAX);
        printf("LLONG_MAX = %lu\n",LLONG_MAX);
    Ben oui, le formateur, c'est "%ull". Tu es bien sous unixoïde ? (sous Windows, il y a un bug)

  8. #8
    Expert confirmé

    Inscrit en
    Novembre 2005
    Messages
    5 145
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par défaut
    Citation Envoyé par salseropom
    est-ce normal que ULONG_MAX == ULLONG_MAX ?
    Rien ne l'empeche. C'est a quoi on s'attend sur une architecture 64 bits (meme si Windows 64 bits ne le fait pas au contraire de ce que faisaient tous les OS 64 bits apparus bien avant).

  9. #9
    Membre émérite
    Avatar de D[r]eadLock
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    504
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 504
    Par défaut
    D'après mon limits.h, il faut que __USE_ISOC99 soit définit
    donc, avec -std=c99 ça passe.

    [edit:]
    Bon, j'ai été un peu lent
    Sinon, c'est vrai que gcc gère les unsigned long long sans le std=c99, mais pas le UULONG_MAX qui ne doit être définit qu'en C99...

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

Discussions similaires

  1. unsigned long long int et printf
    Par darkwall_37 dans le forum Débuter
    Réponses: 19
    Dernier message: 01/02/2013, 14h27
  2. unsigned long long int -> char*
    Par Kaluza dans le forum Langage
    Réponses: 2
    Dernier message: 28/05/2011, 03h12
  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