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 :

strtol("2804336640000",NULL,10)=> 2147483647?


Sujet :

C

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 50
    Points : 26
    Points
    26
    Par défaut strtol("2804336640000",NULL,10)=> 2147483647?
    Bonjour,
    tout est dans le sujet,
    mais je ne comprends pas

    cette fonction fonctionne tres bien sur des petits chiffres mais
    par exemple

    ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strtol("2804336640000",NULL,10);
    me renvoit 2147483647

    pourquoi diable?

    Merci de votre aide,

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Points : 4 637
    Points
    4 637
    Par défaut Re: strtol("2804336640000",NULL,10)=> 214748364
    Citation Envoyé par drpark
    cette fonction fonctionne tres bien sur des petits chiffres mais
    par exemple

    ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strtol("2804336640000",NULL,10);
    me renvoit 2147483647

    pourquoi diable?
    C'est tout simplement car 2804336640000 est superieur a la valeur maximale pouvant etre stockee dans un long

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 50
    Points : 26
    Points
    26
    Par défaut
    Ah ok...
    Merci...
    je suis donc dans la merde

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut Re: strtol("2804336640000",NULL,10)=> 214748364
    Citation Envoyé par drpark
    Bonjour,
    tout est dans le sujet,
    mais je ne comprends pas

    cette fonction fonctionne tres bien sur des petits chiffres mais
    par exemple

    ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strtol("2804336640000",NULL,10);
    me renvoit 2147483647
    Cette valeur est invalide car errno n'est pas nul.
    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
     
    #include <stdio.h>
    #include <errno.h>
     
    int main(void)
    {
        long n = strtol("2804336640000",NULL,10);
     
        if (errno)
        {
            perror("strtol");
        }
        else
        {
            printf ("n = %ld\n", n);
        }
     
        return 0;
    }
    Produit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strtol: Result too large
    Visiblement, il y a dépassement de capacité. La valeur à convertir est > LONG_MAX (<limits.h>).
    Pas de Wi-Fi à la maison : CPL

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

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